构造函数源码
//1-----------------------
//构造具有大小为10的object数组
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
//调用ArrayList(10) 默认初始化一个大小为10的object数组。
}
//2-------------------------
//构造具有指定初始容量的空列表
public ArrayList(int initialCapacity) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
//如果用户初始化大小小于0抛异常,否则新建一个用户初始值大小的object数组。
this.elementData = new Object[initialCapacity];
}
//3--------------------------
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// 当c.toArray返回的不是object类型的数组时,进行下面转化。
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
//可以 用此构造方法 做类型转换?实际测试是可行的
Set<String> set = new HashSet<String>();
set.add("1");
set.add("2");
List<String > testConstrctor = new ArrayList<String>(set);
//直接打印,集合转字符串类型,网上很多方法是用拼接,我觉得这样来的更简单
System.out.println(String.valueOf(testConstrctor));
总结:
- 默认无參构造函数调用ArrayList(10) 默认初始化一个大小为10的object数组。
- 用户指定初始化大小的构造函数