我有這個代碼的問題,當我將地圖對象添加到列表時,所有以前添加的對象將被更改。我可以聲明地圖爲非靜態?如何將地圖對象添加到列表對象非靜態在java
for(Statment){
map.put(Key,value),
}
result.add(map);
我有這個代碼的問題,當我將地圖對象添加到列表時,所有以前添加的對象將被更改。我可以聲明地圖爲非靜態?如何將地圖對象添加到列表對象非靜態在java
for(Statment){
map.put(Key,value),
}
result.add(map);
當你添加了一些容器,要添加的參考(不是它所引用的對象的副本),如果你想添加一個副本(這樣,如果你可以改變原來的,和複製添加到列表不會改變),你必須明確地複製它。
例如
Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
for(int i=0;i<10;i++)
map.put(i, i);
list.add(new LinkedHashMap<Integer, Integer>(map)); // add a copy.
// you can change map without the list changing as well.
謝謝,這解決了我的問題 –
您必須聲明for
之外的每個對象,否則你將只是一個參考,而任何修改修改所有。
試試這個。
for (condition) {
if (!map.containskey(key)) {
map.put(key,value);
}
}
result.add(map);
即使這個問題沒有多大意義,這很可能是他的意思。 – Carlos
您確定這是Java嗎?:p –
「非靜態」是什麼意思? – adatapost
請在問題中添加詳細信息。 – Scorpion