不可变性在JAVA中的nCopies API定义中意味着什么?该API的用例是什么?

时间:2018-11-16 05:18:54

标签: java arraylist collections java-api

我在某个地方遇到了nCopies代码并且不熟悉此功能,我抬起头来Oracle Docs,发现定义中说:

返回一个不可变的列表,该列表由指定对象的n个副本组成。

不可变在这里是什么意思?我认为不可变意味着它不能被修改。但是,我注意到我可以对其进行修改。另外,我还可以为其分配其他列表。

这是我编写的用于检查行为的示例代码。

   public static void main(String[] args){
        List<Integer> list = new ArrayList<>(Collections.nCopies(5,0));
        List<Integer> list2 = new ArrayList<>();
        list2.add(2);list2.add(3); 
        for(int i=0;i<list.size();i++){
            int prod = i*2;
            list.set(i, prod); // list is modifiable
        }
        print(list);
        list = list2; // list is assignable
        print(list);
    }

此API的用例是什么?

1 个答案:

答案 0 :(得分:1)

尝试Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed viverra ligula vitae eros ultrices luctus. <input type="button" value="Button one"> Vivamus ut felis massa. Cras a urna egestas, vehicula diam eu, accumsan lectus. Sed feugiat, odio quis cursus venenatis, felis dolor ultricies arcu, sit amet convallis eros nisi vel neque. <input type="button" value="Second button"> Cras facilisis in diam vel eleifend. Duis at tincidunt dui. Aliquam egestas at metus in malesuada. Nulla tincidunt lorem vel cursus porttitor. Phasellus gravida eleifend nulla.-您的版本将不可变的集合传递给ArrayList(Collection<? extends E> c)构造函数,然后将其复制。副本可变的。