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 行中转换为 List 并在第 2 行中进行了修改
最佳答案
Arrays.asList
不会将数组复制到列表中 - 它会在数组上创建一个 View 。通过列表所做的任何更改都会影响数组,反之亦然。这就是为什么您无法添加到 Arrays.asList 返回的列表(或从中删除)的原因 - 因为数组本身无法更改大小。
文档从一个方向明确了这一点:
Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)
...但它是双向的,因为列表没有专用的后备存储。它实际上只是由数组支持。
关于Java 转换为列表后插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002405/