如何在java中将map对象添加到非静态列表对象中

时间:2011-09-26 09:41:40

标签: java list map non-static

我对此代码有疑问,当我将地图对象添加到列表时,所有先前添加的对象都将被更改。我可以将地图声明为非静态吗?

for(Statment){
   map.put(Key,value),                 
 }            
 result.add(map);

3 个答案:

答案 0 :(得分:1)

当您向容器添加内容时,您要添加引用(不是它引用的对象的副本)如果要添加副本(这样,如果您可以更改原始内容,并将副本添加到列表中)不改变)你必须明确地复制它。

e.g。

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.

答案 1 :(得分:1)

试试这个。

for (condition) {
   if (!map.containskey(key)) {
       map.put(key,value);
   }                 
}            
result.add(map);

答案 2 :(得分:0)

您必须在for之外声明每个对象,否则您只添加一个引用,并且任何修改都会修改所有对象。