参考文档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+", ");
}
}