このコードに問題があります。マップオブジェクトをリストに追加すると、以前に追加したすべてのオブジェクトが変更されます。マップを非静的として宣言するにはどうすればよいですか?
for(Statment){
map.put(Key,value),
}
result.add(map);
このコードに問題があります。マップオブジェクトをリストに追加すると、以前に追加したすべてのオブジェクトが変更されます。マップを非静的として宣言するにはどうすればよいですか?
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 (condition) {
if (!map.containskey(key)) {
map.put(key,value);
}
}
result.add(map);
各オブジェクトを外部で宣言するfor
必要があります。そうしないと、参照を 1 つだけ追加し、変更するとすべてが変更されます。