为什么有时候要避免使用ArrayList
在工程中,经常能看到类似如下代码:
final List list1 = ...;
final List list2 = ...;final List results = new ArrayList<>(list1.size() + list2.size());
results.addAll(list1);
results.addAll(list2);
return results;
其功能非常简单,将两个list合并成一个list,而完成这个功能非常简单,就是使用一个ArrayList,将两个list中的元素全部加入到这个list中。
但是这样做的问题在于以下两点:
1. 时间开销大,需要将两个list中的元素全部加入到新的list中
2. 需要创建额外的数组空间,甚至在加入第二个list时,ArrayList需要扩容
可以看到ArrayList中的代码: