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);}
}