Java 转换为列表后插入数组

标签 java java-collections-api

        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/

相关文章:

java - 混淆生成 jsse 的私钥和公钥?

java - 将 mysql 连接器添加到 eclipse 中的 maven/nexus 构建

java - 我可以提供使用泛型类型的方法,其中泛型类型始终是类吗?

java - 访问修饰符如何影响 Java 的性能?

java 8流如何将2列映射到 map 中

java - 如何重写hashcode和equals方法以避免在java中的HashSet中添加重复的字符串?

java - 错误 : Wrapper cannot find servlet class VendorRegistration or a class it depends on

java - 检查 HashMap <Object,String> 的值

java - 为什么当我尝试在此列表上使用迭代器时抛出此异常?