下面介绍ArrayList的三种初始化
1.无参构造
如果调用的是无参构造 数组其实是空数组 在第一次add的时候开始进行扩容 生成一个默认长度为10的数组。
2.有参构造(int)
直接用传进来的参数当作数组的长度。
3.有参构造(collection)
直接传进来一个collection类型的对象时,会调用toArray()方法,比如:
ArrayList list1 = new ArrayList(1); list1.add(1); list1.add(2); list1.add(3); list1.add(4); ArrayList arrayList = new ArrayList(list1);
内部直接调用 list1.toArray ,将得到的数组赋值给ArrayList内部数组,倘若此处声明的是HashSet也是一样,将hashSet.toArray赋值给内部数组
ArrayList list1 = new ArrayList(1); HashSet hashSet = new HashSet(); list1.add(1); list1.add(2); list1.add(3); list1.add(4); hashSet.addAll(list1); ArrayList arrayList = new ArrayList(hashSet);
*注意此处的HashSet 使用addAll方法时,是使用增强for循环一个一个赋值。
4.关于扩容
每次add添加元素时,会首先用size+1