簡體   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