我有一个Class1
私有属性TreeMap<Long, List<Class2>> tree;
和其他属性,我想写一个构造函数Class1(Class1 copyOfClass1)
。我应该显式地创建List
值TreeMap
(例如,在循环中),还是使用this.tree=new TreeMap(copyOfClass1.tree)
它?
问问题
355 次
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 回答