参考文档1:包含诸多类中方法的使用
参考文档2: 删除列表中的元素[1. 使用remove方法删除指定元素(索引、元素)2. 迭代器遍历找到后删除]
参考文档3:更多介绍ArrayList的内容
注意事项
- ArrayList中维护了一个Object类型的数组
elelentData
transient Object[] elementData transient 表示该属性不会被序列化
- 当创建ArrayList对象时,如果使用无参构造器,则初始化elementData容量为0,第一次添加,扩容到10,如果需要再次扩容,则扩容为1.5倍
- 当创建ArrayList对象时使用带参(指定大小)构造器,则初始化elementData为指定大小,如果需要扩容,则直接扩容为1.5倍
//探究底层源码public static void main(String[] args) {//使用无参构造器创建ArrayList对象ArrayList list = new ArrayList();//使用带参构造器// ArrayList list = new ArrayList(0);// ArrayList list = new ArrayList(8);//使用for循环给list集合添加 1-10 数据for (int i = 1; i <= 10; i++) {list.add(i);}//使用for循环给list集合添加 11-15 数据for (int i = 11; i <= 15; i++) {list.add(i);}list.add(100);list.add(200);list.add(null);for (Object o : list) {System.out.println(o);}}
如何更好地使用ArrayList
- 确定所需存储空间的大小后在初始化ArrayList时可以指定其大小
- 确定不需要多余的存储空间时可以调用
trimToSize()函数释放存储空间,Java不会自动帮我们释放。
数组与ArrayList之间的相互转换
数组 —> ArrayList
使用Arrays类的asList()方法
public static void main(String[] args) {ArrayList<Cat> cats = new ArrayList<>();Cat thomas = new Cat("Thomas");Cat behemoth = new Cat("Behemoth");Cat lionel = new Cat("Lionel Messi");Cat fluffy = new Cat ("Fluffy");Cat[] catsArray = {thomas, behemoth, lionel, fluffy};ArrayList<Cat> catsList = new ArrayList<>(Arrays.asList(catsArray));System.out.println(catsList);}
Output:
[Cat{name=’Thomas’}, Cat{name=’Behemoth’}, Cat{name=’Lionel Messi’}, Cat{name=’Fluffy’}]
ArrayList —> 数组
直接使用ArrayList对象的public <T> T[] toArray(T[] a)方法
import java.util.ArrayList;import java.util.Comparator;class Main {public static void main(String[] args){// 创建一个动态数组ArrayList<String> sites = new ArrayList<>();sites.add("Runoob");sites.add("Google");sites.add("Wiki");sites.add("Taobao");System.out.println("网站列表: " + sites);// 创建一个新的 String 类型的数组// 数组长度和 ArrayList 长度一样String[] arr = new String[sites.size()];// 将ArrayList对象转换成数组sites.toArray(arr);// 输出所有数组的元素System.out.print("Array: ");for(String item:arr) {System.out.print(item+", ");}}}

使用public Object[] toArray()方法
public static void main(String[] args){// 创建一个动态数组ArrayList<String> sites = new ArrayList<>();sites.add("Runoob");sites.add("Google");sites.add("Wiki");sites.add("Taobao");System.out.println("网站列表: " + sites);// 将 ArrayList 对象转换成数组// 该方法没有参数Object[] obj = sites.toArray();// 输出数组中所有的元素System.out.print("Array: ");for(Object item : obj) {System.out.print(item+", ");}}

