0

我有一个Class1私有属性TreeMap<Long, List<Class2>> tree;和其他属性,我想写一个构造函数Class1(Class1 copyOfClass1)。我应该显式地创建ListTreeMap(例如,在循环中),还是使用this.tree=new TreeMap(copyOfClass1.tree)它?

4

1 回答 1

1

如果你使用this.tree=new TreeMap(copyOfClass1.tree)它将等同于

this.tree=new TreeMap();
this.tree.putAll(copyOfClass1.tree)

但是,它不会复制存储在地图中的列表。键将指向相同的列表。

如果您不希望这种行为,我建议您遍历条目并制作列表的副本。

    this.tree = new TreeMap<Long, List<Class2>>();
    for (Entry<Long, List<Class2>> entry : copyOfClass1.tree.entrySet()) {
        this.tree.put(entry.getKey(), new ArrayList<Class2>(entry.getValue()));
    }
于 2013-04-17T15:27:48.970 回答