0

私は持っていHashmap <integer, Arraylist<Double>>ます。コピーしたいのですが。cloneハッシュマップの方法を考えていました。javadocを調べた後、次のように表示されます。

clone
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned. 

この浅いコピーはどういう意味ですか?元の行列の値を更新している間、値が変更されない別の行列が必要です。

さらに、なぜですか、

    if( hm1 == hm1.clone()) 

falseを返しますか?

4

2 に答える 2

8

浅いコピーは、マップ オブジェクトのみが新しく作成されることを意味しますが、その値は複製されません。つまり、コピーには古いエントリへの参照が含まれます。したがって、マップを「ディープ クローン」するには、次の手順を実行する必要があります。

  1. 新しいハッシュ マップ オブジェクトを作成する
  2. 古いマップのすべてのエントリを反復処理し、キーと値の(深い) クローンを新しいマップに追加します

==マップの内容ではなく、オブジェクト参照を比較するためです。

于 2012-05-02T11:50:58.697 に答える
0

Map にはキー (この場合は Integer インスタンス) と値 (ArrayLists) があります。複製されたマップでは、すべてのキーと値が同じインスタンスになります。

たとえば、Integer k1=new Integer(1); があります。Arraylist value1=new Arraylist();

originalMap.put(k1, 値1);

clonedMap では、すべての唯一のキーは、最初に k1 用に作成された同じインスタンスです。値についても同様です。

于 2012-05-02T11:53:15.860 に答える