0

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