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