私はClass1
プライベート属性TreeMap<Long, List<Class2>> tree;
などを持っていて、コンストラクターを書きたいですClass1(Class1 copyOfClass1)
。明示的に (たとえば、ループで)のList
値を作成する必要がありますか、それとも使用する必要がありますか?TreeMap
this.tree=new TreeMap(copyOfClass1.tree)
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 に答える