我知道,list2.addAll(list1)让我们可以附加对象追加到list2从list1是否list2已经有一些对象调用此方法之前
但我不附加任何内容,我想知道下一个案例的区别
使用下一个方法制作列表副本时会有什么不同
例如,我有一些对象的列表(list1),我想制作它的副本,将其内容复制到另一个列表(到一个新的列表 - list2)
List<Foo> list1 = new ArrayList<>();
list1.add(new Foo());
...
Run Code Online (Sandbox Code Playgroud)
方法1
List<Foo> list2 = new ArrayList<>(list1);
Run Code Online (Sandbox Code Playgroud)
方法2
List<Foo> list2 = new ArrayList<>();
list2.addAll(list1);
Run Code Online (Sandbox Code Playgroud)
更新
实际上甚至IntelliJ IDEA建议我将方法2转换为方法1:
是的,我认为方法2会有点无效,我的观点是:
当你这样做:
List<Object> list2 = new ArrayList<Object>(list1);
Run Code Online (Sandbox Code Playgroud)
ArrayList已经知道它需要分配给内存的大小,该内存是list1中Object的计数.
在方法2中,它创建一个具有默认大小的list2对象.在执行添加操作时,它会自动更新.因为这将是一项额外的操作.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |