Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Collections.unmodifiableList不适用于list.addAll()_Java - Fatal编程技术网

Java Collections.unmodifiableList不适用于list.addAll()

Java Collections.unmodifiableList不适用于list.addAll(),java,Java,我正在做一些关于Collection(List,Set)的研究,我试图修改List界面的内容,尽管我使用了Collections.unmodifiableList(List)。下面是我开发的 public class CollectionDemo2 { public static void main(String[] args) { List<String> modifiable = new ArrayList<>(); modif

我正在做一些关于
Collection(List,Set)
的研究,我试图修改
List
界面的内容,尽管我使用了
Collections.unmodifiableList(List)
。下面是我开发的

public class CollectionDemo2 {
    public static void main(String[] args) {
        List<String> modifiable = new ArrayList<>();
        modifiable.add("Java");
        modifiable.add("Spring");
        modifiable = Collections.unmodifiableList(modifiable);

        List<String> list = new ArrayList<>();
        list.add("Oracle");
        list.add("MySQL");
        list = Collections.unmodifiableList(list);

        List<String> finalList = new ArrayList<String>();
        finalList.addAll(modifiable);
        finalList.addAll(list);
        finalList.add("Python");

        // Now remove value from list object
        finalList.remove("Oracle");

        System.out.println(finalList);
    }
}
Output (O/P): [Java, Spring, MySQL, Python]
公共类集合演示2{
公共静态void main(字符串[]args){
列表可修改=新建ArrayList();
添加(“Java”);
可修改。添加(“弹簧”);
可修改=集合。不可修改列表(可修改);
列表=新的ArrayList();
列表。添加(“Oracle”);
添加(“MySQL”);
列表=集合。不可修改列表(列表);
List finalList=new ArrayList();
finalList.addAll(可修改);
finalList.addAll(列表);
添加(“Python”);
//现在从列表对象中删除值
finalList.remove(“甲骨文”);
System.out.println(finalList);
}
}
输出(O/P):[Java、Spring、MySQL、Python]

在这里,我在两个列表对象上都使用了
集合。不可修改列表
,以允许不修改列表(独立工作正常),但当创建一个列表并添加这两个列表对象时,它允许我
删除以前的列表内容,这是我希望在项目实现中不允许的?有人知道这是怎么发生的吗?

您正在修改
finalList
,它不是不可修改的,因此可以修改。在
finalList
中添加/删除元素时,这两个不可修改列表(
modifiable
list
)保持不变,但您没有使用
unmodifiableList
返回的列表(writes)
finalList
不是不可修改的。。。你期望什么?为什么?“集合(列表、集合和映射)”。。。我希望您不要认为
Map
扩展了
Collection
界面。
List.addAll
只添加了其他列表的内容。我想这是造成混乱的原因。谢谢迈克。我认为它将内容添加到其他列表中,我们可以对其进行操作。谢谢,赫玛