集合-ArrayList类

本文详细对比了ArrayList与LinkedList这两种Java集合框架中常用的列表实现方式。ArrayList使用数组结构,适合频繁查找,而LinkedList采用双向列表结构,适用于频繁增删操作。此外,还介绍了Arrays.asList()与List.of()的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ArrayList:

--是List 的一个子类;
	
--使用数组结构,增加删除慢,查找快;

public static void main(String[] args) {

    ArrayList<Integer> data = new ArrayList<>();
    
    //在数组中添加值
    data.add(100);
    data.add(200);
    data.add(300);
    data.add(400);
    
    //添加值到指定位置
    data.add(4,300);
    
    //输出指定下标的值
    System.out.println(data.get(1));
    
    //返回此列表的列表迭代器
    System.out.println(data.iterator());
    
	//判断数组列表中是否存在该值,存在,返回true;
    boolean con = data.contains(300);
    System.out.println(con);
    
	// 输出数组中第一次出现该值的下标
    System.out.println(data.indexOf(300));
    
	//输出数组中最后一次出现该值的下标
    System.out.println(data.lastIndexOf(300));
    
	// 输出该数组的元素数
    System.out.println(data.size());
    
	//每次使用ArrayList申请数组空间,会申请出多于当前数组大小的空间,使用trimToSize方法,可以去掉多余的空间,内存紧张时可以使用;
    data.trimToSize();
    
	//输出数组指定范围内的内容
    System.out.println(data.subList(0,3));
    
    //删除数组中指定元素
    System.out.println(data.remove(2));
    
    //删除所有数组内元素
    data.clear();
    System.out.println(data);
    
	//判断数组是否是空数组
    System.out.println(data.isEmpty());
}

LinkList:

//linkList:使用的是双向列表结构,增加删除快,查找慢;
    //add()
    //remove()
    //get()

    LinkedList<Integer> list = new LinkedList<>();
    //压栈
    list.push(100);
    list.push(200);
    //弹栈
    Integer i = list.pop();
    System.out.println(i);
    /**
    list.addFirst(100);
    list.addFirst(200);
    Integer i = list.removeFirst();
    list.removeLast();
     System.out.println(i);
     */
     
     /**
      Arrays.asList()和list.of() 的区别:
    	Arrays.asList() 返回可变的列表,list返回的不可变的列表,不能再次赋值;
        List<Integer> list = Arrays.asList(1,2,null);
        list.set(1,10);
        List<Integer> list1 = List.of(1,2,3);
        list1.set(1,10);

    // 抛出NullPointerException异常
        List<Integer> list1 = List.of(1,2,null);

    //对contains方法处理不一样
      List<Integer> list = Arrays.asList(1,2,null);
      list.contains(null);
      List<Integer> list1 = List.of(1,2,3);
      list1.contains(null);

    //Arrays.asList:会更改数组结果;List.of:不会更改数组结果;
      Integer[] arr = {1,2,3};
      List<Integer> list = Arrays.asList(arr);
      arr[1] = 10;
      System.out.println(list);
      Integer[] arr1 = {1,3,4};
      List<Integer> list1 = List.of(arr1);
      arr1[1] = 10;
      System.out.println(list1);

*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值