[英]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.