java集合1.1(List 增、删、改、查),迭代器遍历,<ArrayList 和 LinkedList 实现类>

java集合1.1(List 增、删、改、查),迭代器遍历,<ArrayList 和 LinkedList 实现类>,第1张

java集合1.1

1、Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

Collection 接口存储一组不唯一,无序的对象。

2 List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。

3、特点:有序可重复

  • 有序指的是下标
  • 可重复指的是的可以存储相同的值,将相同值存储在不同下标位置上实现,并且按照新增的顺序储存
ArrayList储存读取数据 1、添加元素

< > 钻石符

使用 add() 方法添加元素到 ArrayList

//使用 add() 方法:
public class Arrog {
    @Test
    public void test01() {
        List list=new ArrayList();
        
基本类型和对象都可以添加
        byte a = 1;
        short b = 2;
        int c = 3;
        long d = 4l;
        double e = 5.0d;
        float f = 6.0f;
        char g = 'a';
        boolean h = false;
        String i="你好java";
        Cat cat=new Cat();
        
使用 add() 方法添加元素:
        list.add(a);
        list.add(b);
        list.add(c);
        list.add(d);
        list.add(e);
        list.add(f);
        list.add(g);
        list.add(h);
        list.add(i);
        list.add(cat);
        System.out.println(list.size());//长度10
       }
2、访问元素

使用 get() 方法可以访问 ArrayList 中的元素
注意:数组的索引值从 0 开始。

// get() 方法访问
 @Test
    public void test09() {
        List list = new ArrayList();
        list.add("你好java");
        list.add(23);
        list.add('a');
        
使用 get() 方法,通过下标访问 ArrayList 中的元素
        System.out.println(list.get(2));
        System.out.println(list.get(0));
        
3、修改元素

使用 set() 方法:如果要修改 ArrayList 中的元素可以使用 set() 方法
根据index下标获取参数

@Test
    public void test03() {
        List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
        System.out.println(list);
//第一个参数为索引位置根据index下标获取参数,第二个为要修改的值,将下标3改为25
        list.set(3,25);
        System.out.println(list);
    }
    ---------------------------------------------------------------------
    
    运行:
    	[0, 1, 2, 3, 4]
		[0, 1, 2, 25, 4]
		
4、删除元素

使用 remove() 方法:删除 ArrayList 中的元素

@Test
    public void test03() {
        List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
        System.out.println(list);
//第一个参数为索引位置,第二个为要修改的值,将下标3改为66
        list.set(3,66);//[0, 1, 2, 66, 4]
//第一个参数为索引位置,第二个为要插入的值
        list.add(1,6);//[0, 6, 1, 2, 66, 4]
        System.out.println(list);
//删除下标1 的值
        list.remove(1);
		 System.out.println(list);
		 
------------------------------------------------------------------------------

运行:
	[0, 1, 2, 3, 4]
	[0, 6, 1, 2, 66, 4]
	[0, 1, 2, 66, 4]		 
计算大小

如果要计算 ArrayList 中的元素数量可以使用 size() 方法


 @Test
    public void test03() {
        List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
        System.out.println(list.size());
        
5、泛型

**:限定参数的数据类型
< 参数类型> 钻石符

List<参数类型> :可限定参数的数据类型
 @Test
    public void test010() {
        List<Integer> list = new ArrayList<Integer>();
        list.add(35);
        System.out.println(list);
    }
}

不可更改元素** 不可变集合和可变集合


不可变集合List.of()
@Test
    public void test02() {
        List<Integer> list = List.of(0, 1, 2, 3, 4);
        System.out.println(list);
        //无法更改数值会报错
        // list.add(6);
        // list.set(2,20);
        //System.out.println(list);
    }
    
可变集合:可以修改集合的值    
     @Test
    public void test03() {
    //将不可变集合转为可变集合
        List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
        System.out.println(list);
        list.add(6);
        System.out.println(list);
        list.set(3, 55);
        System.out.println(list);

字符串类型的 增、删、改、查

字符串类型的  增、删、改、查

@Test
    public void test04() {
        List<String> list = new ArrayList<>(List.of("0", "1", "2", "3", "4"));
            System.out.println(list);//输出[0, 1, 2, 3, 4]
        list.add("徐");
            System.out.println(list);//增加数值  [0, 1, 2, 3, 4, 徐]
        list.add(3, "33");
            System.out.println(list);//插入下标3插入数值 [0, 1, 2, 33, 3, 4, 徐]
        list.remove(1);
            System.out.println(list);//删除下标1的值 [0, 2, 33, 3, 4, 徐]
        list.remove("2");
            System.out.println(list);//直接删除数值2 [0, 33, 3, 4, 徐]
        list.add("海");
        list.add("海");
            System.out.println(list);//增加2个数值 [0, 33, 3, 4, 徐, 海, 海]
        list.remove("海");
            System.out.println(list);//删除数值海 [0, 33, 3, 4, 徐, 海]
        list.set(0, "零");
            System.out.println(list);//更改下标0的值[零, 33, 3, 4, 徐, 海]
        System.out.println(list.get(0));//访问下标0的值  零
    }
-----------------------------------------------------------------------

运行:
	[0, 1, 2, 3, 4]
	[0, 1, 2, 3, 4,]
	[0, 1, 2, 33, 3, 4,]
	[0, 2, 33, 3, 4,]
	[0, 33, 3, 4,]
	[0, 33, 3, 4,,,]
	[0, 33, 3, 4,,]
	[, 33, 3, 4,,]
6、遍历数组

for循环遍历数组:
@Test
    public void test05() {
        List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
    
增强for-each循环遍历数组: 
   @Test
       public void test011() {
           List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
               for (int num : list) {
                   System.out.println(num);
               }
           }
7、迭代器遍历集合:

    @Test
    public void test06() {
        List<Integer> list = new ArrayList<>(List.of(0, 1, 2, 3, 4));
   // 获取改集合的迭代器
          Iterator<Integer> iter = list.listIterator();
   // hasNext方法是布尔类型 ,查看是否有数值有就输出,没有就接收,只能遍历一次     
        while (iter.hasNext()) {
   // next方法     
            Integer next = iter.next();
            System.out.println(next);
        }
        System.out.println("第一次遍历完成");
    }
8、ArrayList 和 LinkedList 实现类

1、ArrayList:底层是数组,删除和新增速度慢 因为在曾经产生拷贝删除大概率会移动,导致速度慢,因为是线性储存,所以 查询速度快

2、LinkedList:底层是双向链表结构,新增和删除速度快 元素时数据不动,指针变动重新指向位置,但查询时要先下标排序所以 查询速度慢

快捷键:ctrl+r 代码替换

LinkedList

ArrayList

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/759188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存