慕碼人8056858
2024-01-28 16:42:36
我想做一些初始化 ArrayList 的操作,其中包含非空項,具體取決于另一個變量的大小。private static final int SIZE_LIST_GROUP_MAP = 10;public static final List<Map<String, String>> LIST_GROUP_MAP = new ArrayList<>() { for(int i=0; i < SIZE_LIST_GROUP_MAP; i++) { add(new HashMap<>()); } };以前可以做類似的事情嗎?
2 回答

Smart貓小萌
TA貢獻1911條經驗 獲得超7個贊
如果您愿意使用第三方庫,這應該適用于Eclipse Collections:
public?static?final?List<Map<String,?String>>?LIST_GROUP_MAP?=? ????Lists.mutable.withNValues(SIZE_LIST_GROUP_MAP,?HashMap::new);
考慮到您要在靜態變量中存儲List
包含可變的可變變量,您可能需要考慮使用同步與同步或s 來代替。以下代碼將為您提供一個包含一組固定實例的同步。Maps
List
ConcurrentMap
List
ConcurrentMap
public?static?final?List<Map<String,?String>>?LIST_GROUP_MAP?=? ????Lists.mutable.<Map<String,?String>>withNValues( ????????????SIZE_LIST_GROUP_MAP, ????????????ConcurrentHashMap::new).asSynchronized()
Eclipse Collections 還支持MultiReaderList
s。
public?static?final?List<Map<String,?String>>?LIST_GROUP_MAP?=? ????Lists.multiReader.withNValues(SIZE_LIST_GROUP_MAP,?ConcurrentHashMap::new)
最后,如果靜態的List
大小永遠不會改變,那么您可以將其設置為不可變,如下所示:
public?static?final?ImmutableList<Map<String,?String>>?LIST_GROUP_MAP?= ????????Lists.mutable.<Map<String,?String>>withNValues( ????????????????SIZE_LIST_GROUP_MAP, ????????????????ConcurrentHashMap::new).toImmutable();
注意:我是 Eclipse Collections 的提交者。

蝴蝶不菲
TA貢獻1810條經驗 獲得超4個贊
您可以使用雙大括號來完成此操作,但最終會得到 ArrayList 的子類:
private static final int SIZE_LIST_GROUP_MAP = 10;
public static final List<Map<String, String>> LIST_GROUP_MAP = new ArrayList<>() {{
for(int i=0; i < SIZE_LIST_GROUP_MAP; i++)
{
add(new HashMap<>());
}
}};
添加回答
舉報
0/150
提交
取消