[英]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)施加任何限制。
话虽如此,如果列表中的对象不是可变的(例如, String
、 LocalDate
或其他值对象),则您无法修改它们。
至于第二部分,您需要一个不可修改的集合,为此您可以简单地使用java.util.Collections.unmodifiableList(List<? extends T>)
创建一个。 或在 Java 9+ 中,使用List.of
或List.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.