我想要一个List
不能删除或添加其元素的元素。我以为我在 Java 8 中使用Collections.unmodifiableList找到了答案。我传递了我的原始列表并取回了一个假定不可修改的列表。
然而,当我从原始列表中删除一个元素时,我的不可修改列表被修改了。到底是怎么回事?
请参阅此演示代码。从原始列表中删除时,我的不可修改列表从 3 个元素 2 缩小。
String dog = "dog";
String cat = "cat";
String bird = "bird";
List< String > originalList = new ArrayList<>( 3 );
originalList.add( dog );
originalList.add( cat );
originalList.add( bird );
List< String > unmodList = Collections.unmodifiableList( originalList );
System.out.println( "unmod before: " + unmodList ); // Yields [dog, cat, bird]
originalList.remove( cat ); // Removing element from original list affects the unmodifiable list?
System.out.println( "unmod after: " + unmodList ); // Yields [dog, bird]