我有这个代码的问题,当我将地图对象添加到列表时,所有以前添加的对象将被更改。我可以声明地图为非静态?如何将地图对象添加到列表对象非静态在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