【问题标题】:how can add map object to list object non static in java [closed]java - 如何在java中将地图对象添加到列表对象非静态[关闭]
【发布时间】:2011-11-25 01:54:09
【问题描述】:

这段代码有问题,当我将地图对象添加到列表时,之前添加的所有对象都将被更改。如何将地图声明为非静态?

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

【问题讨论】:

  • 你确定这是Java吗?:p
  • “非静态”是什么意思?
  • 请在问题中添加详细信息。

标签: java list map non-static


【解决方案1】:

当您向容器添加内容时,您添加的是引用(不是它引用的对象的副本)不会改变)你必须明确地复制它。

例如

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.

【讨论】:

    【解决方案2】:

    试试这个。

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

    【讨论】:

    • 虽然这个问题没有多大意义,但这很可能就是他的意思。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 2016-02-14
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      相关资源
      最近更新 更多