繁体   English   中英

如何创建一个 Java 列表/映射/集合,我可以在其中修改值但不能添加或删除元素?

[英]How can I create a Java List/Map/Collection in which I can modify the values but not add nor remove elements from it?

我想创建某种列表,我可以在其中修改内部对象的值,但一旦初始化就无法添加或删除。 这可能吗? 如果是这样,我该怎么做?

如果存储在List (或任何Collection )中的对象类型是可变的,那么问题的第一部分与 Java collections 和 object 引用的工作方式有关。 仅仅因为一个集合中包含一个 object 并不会对我可以用 object 做什么(或 _to)施加任何限制。

话虽如此,如果列表中的对象不是可变的(例如, StringLocalDate或其他值对象),则您无法修改它们。

不可修改的列表

至于第二部分,您需要一个不可修改的集合,为此您可以简单地使用java.util.Collections.unmodifiableList(List<? extends T>)创建一个。 或在 Java 9+ 中,使用List.ofList.copyOf制作不可修改的列表

固定大小列表

如果您想要的是一个无法添加或删除但可以替换单个元素的List ,那么请考虑第三方库:

实现一些 Collection 接口,创建 Collection 实现的变量,并覆盖 add、remove 和 get 方法。 例如:

class myCollection implements List{
private List<Integer> list =new ArrayList<>(); 

public  myCollection (Collection col){
list.addAll(col);
}
@Override
Integer get(int i){
return list.get(i);
}
@Override
void remove(int i){
//empty so you cant remove anything
}
}     

希望你有一个想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM