Java在转换为列表后插入数组
String[] arr = { "Java", "Champ", "." };
List<String> list = (List<String>) Arrays.asList(arr); // line 1
arr[2] = ".com"; // line 2
for (String word : list) {
System.out.print(word);
}
该结果如何输出为JavaChamp.com
,即使它在第1行中转换为列表并在第2行中修改
# 1 楼答案
从Arrays.asList()的JavaDoc:
这意味着您的
List<String>
仍由数组支持。因此,如果更改数组,则更改列表中的内容编辑为了获得更多乐趣,您可以反向操作:
# 2 楼答案
Arrays.asList
返回传入数组的“列表视图”。它不会复制数组list.get(1)
,例如,仅委托给arr[1]
。因此,当您继续更改数组元素时,您将继续隐式更改列表元素# 3 楼答案
^{} 不会将数组复制到列表中-它会在数组上创建一个视图。通过列表所做的任何更改都会影响阵列,反之亦然。这就是为什么不能添加到
Arrays.asList
返回的列表中(或从中删除),因为数组本身不能更改大小文件从一个方向明确了这一点:
。。。但它是双向的,因为列表没有专用的后备存储。它实际上是由阵列支持的