零基础学Java第十六天之ArrayList集合

ArrayList集合详解

1、理解

  • 动态数组ArrayList 本质上是一个可以动态调整大小的数组。当添加或删除元素时,它会根据需要自动增长或缩小其容量。
  • 索引访问:与普通的 Java 数组类似,ArrayList 中的元素可以通过索引(从 0 开始)来访问。
  • 泛型支持ArrayList 是泛型的,这意味着你可以指定它包含的元素类型,例如 ArrayListArrayList

2、特性

  1. 自动扩容:当向 ArrayList 添加元素而容量不足时,它会自动增长。默认情况下,容量会翻倍(但也可能只是增长某个固定的大小)。
  2. 随机访问:由于 ArrayList 是基于数组的,所以访问任意位置的元素都是很快的(常数时间复杂度)。
  3. 插入和删除效率:在列表的末尾添加或删除元素是很快的(近似常数时间复杂度)。但在列表的中间或开头插入或删除元素可能较慢,因为可能需要移动大量元素以保持列表的连续性。
  4. 内存使用:由于 ArrayList 需要维护一个数组,并且可能频繁地扩容和重新分配内存,因此它可能会比某些其他集合类型(如 LinkedList)使用更多的内存。

3、用法

1、导入

import java.util.ArrayList;

2、创建

ArrayList list = new ArrayList(); // Java 7 及更早版本

ArrayList list = new ArrayList<>(); // Java 8 及更新版本(使用类型推断)

3、操作

1、添加元素

list.add(“元素1”)

list.add(“元素2”)

list.add(“元素3”)

2、设置指定下标上的元素

list.set(1, “1号”);

3、获取指定下标上的元素

String str = list.get(1);
System.out.println(“获取指定下标上的元素:” + str);//1号

4、获取元素个数

int size = list.size();
System.out.println(“获取元素个数:” + size);//3

5、在指定下标上添加元素

list.add(2, “2号”);

6、批量添加元素

ArrayList newList1 = new ArrayList<>();

Collections.addAll(newList1, “aaa”,“bbb”,“ccc”,“ccc”);//利用集合工具类(Collections)

ArrayList newList2 = new ArrayList<>();
Collections.addAll(newList2, “xxx”,“xxx”,“yyy”,“yyy”,“zzz”,“zzz”);//利用集合工具类(Collections)

list.addAll(3, newList2);//将newList2中所有的元素都添加到list集合里指定下标的位置

7、清空集合中所有元素

list.clear();

8、判断元素是否包含指定元素

list.contains(“1号”));

9、判断集合中是否包含指定集合

list.containsAll(newList1));

10、获取元素在集合中第一次出现的下标

list.indexOf(“ccc”));

11、获取元素在集合中最后一次出现的下标

list.lastIndexOf(“ccc”));

12、判断集合里是否没有元素

list.isEmpty());

13、通过下标删除元素

list.remove(9);

14、通过数据删除元素

list.remove(“2号”);

15、去除交集

list.removeAll(newList1);

16、保留交集

list.retainAll(newList2);

17、从开始下标处(包含)截取到结束下标处(排他)的元素,返回新的集合

List subList = list.subList(1, 4);

18、将集合转换为数组

Object[] array1 = subList.toArray();

System.out.println(Arrays.toString(array1));

19、将集合转换为指定类型的数组

String[] array2 = new String[3];

subList.toArray(array2);

System.out.println(Arrays.toString(array2));

20、遍历集合 – for循环

for (int i = 0; i < list.size(); i++) {

​ System.out.println(list.get(i));

}

21、遍历集合 – foreach

for (String element : list) {

​ System.out.println(element);

}

22、遍历集合 – Iterator

Iterator it = list.iterator();

while(it.hasNext()){//判断是否有可迭代的元素

​ String next = it.next();//获取下一个元素

​ System.out.println(next);

}

23、遍历集合 – ListIterator

ListIterator listIterator = list.listIterator();

while(listIterator.hasNext()){//判断是否有可迭代的元素

​ String next = listIterator.next();//获取下一个元素

​ System.out.println(next);

}

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值