2011-12-21 15 views
2

LinkedHasMapをJavaでクローニングするにはどうすればよいですか?Java LinkedHashMapのクローニング

私はすでに試した:

Map<String, Object> clonedMap = new LinkedHashMap<String, Object>(originalMap); 

しかし、それは動作しませんでした。

+0

なぜ機能しませんでしたか?あなたは何をしたいのですか? – SLaks

+6

"did not work"を定義します。 'new Map(map)'は "浅い"コピーを作成します - 参照は同じです。 「深い」コピー(すべてのキーと値も*クローン化されている)を意味する場合、答えはキークラスと値クラスの実装に完全に依存します。 – Bohemian

+1

ボヘミアンは言ったように、深いコピーはあなたが後にしている可能性が高いです。 [ここ](http://stackoverflow.com/questions/64036/how-do-you-make-a-deep-copy-of-an-object-in-java)を参照してください。 – threenplusone

答えて

1

ディープコピーを取得する最も簡単な方法は、マップをシリアル化してからそれを逆シリアル化することです。より速い方法は、マップ全体を考え、各キー/値を複製して新しいマップに配置することです。

浅いコピーが必要な場合は、スニペットが正しく行います。

+0

シリアライゼーションは簡単な解決策ですが、何か自動化したい場合は、むしろリフレクションを使用したいと思います。しかし、クローン可能なすべてのクラスにCloneableインターフェイス(http://docs.oracle.com/javase/6/docs/api/java/lang/Cloneable.html)を実装させることがさらに効果的です。 –

関連する問題