小编par*_*i26的帖子

在其他arraylist上执行addAll时,两个arraylists都引用相同的元素

当我将a的所有内容添加ArrayList到另一个时ArrayList,另一个ArrayList包含对第一个元素的引用ArrayList.因此,当我更改Lists 中的任何一个元素时,另一个元素中的相应元素List也会发生变化.这显然意味着addAll分配对新的引用List.

参考代码:

ArrayList<StringBuffer> a = new ArrayList<>();
a.add(new StringBuffer("1"));
a.add(new StringBuffer("2"));
a.add(new StringBuffer("3"));

ArrayList<StringBuffer> b = new ArrayList<>();
b.addAll(a);

System.out.println("Arralists" + " before: ");
System.out.println("A arraylist" + a.toString());
System.out.println("B arraylist" + b.toString() + "\n\n");

a.set(0, a.get(0).replace(0, 1, String.valueOf(4)));

System.out.println("Arralists after " + "updating a: ");
System.out.println("A arraylist" + a.toString());
System.out.println("B arraylist" + b.toString() + "\n\n");
Run Code Online (Sandbox Code Playgroud)

对应日志:

Arralists before: 
A arraylist[1, 2, 3]
B …
Run Code Online (Sandbox Code Playgroud)

java collections arraylist

1
推荐指数
1
解决办法
62
查看次数

标签 统计

arraylist ×1

collections ×1

java ×1