ArrayList的注意事项
-
1,permits all, including null, ArrayList 甚至可以加入多个null,并且可放多个
-
2,ArrayList 是由数组来实现数据存储的
-
3,ArrayList 基本等同于Vector,除了ArrayList 是线程不安全但执行效率高
在多线程情况下,不建议使用ArrayList,可以考虑使用Vector
ArrayList的底层操作机制源码分析(重点)
- ArrayList中存在一个Object类型的数组elementDate (transient Object[] elementDate;) (transient 表示瞬间的,短暂的,表示该属性不会被序列号)
- 当创建ArrayList对象时,如果使用的是无参构造器,则初始化elementDate容量为0。第一个添加,则扩容elementDate为10.如需再次扩容,则扩容elementDate为1.5倍
- 如果使用的是指定大小的构造器,则初始elementDate容量为指定大小,如果需要扩容,则直接扩容elementDate为1.5倍
public class ArrayListSource {
@SuppressWarnings({"all"})
public static void main(String[] args) {
//使用无参构造器创建ArrayList对象
ArrayList list = new ArrayList();
//使用有参构造器创建ArrayList对象
ArrayList list1 = new ArrayList(8);
//使用普通for给list集合添加1-10数据
for (int i = 1; i <= 100; i++) {
list.add(i);
}
//使用for给list添加11-15数据
for (int i = 11; i <=20 ; i++) {
list.add(i);
}
System.out.println(list);
}
}