私はHashMap
のディープコピーを作成する最良の方法を見つけようとしています。このマップには、Cloneable
を実装するオブジェクトがありません。シリアル化と逆シリアル化よりも良い解決策を見つけたいと思います。
Deep Cloningを見てください。GoogleCodeでライブラリを見つけることができます。 https://github.com/kostaskougios/cloning で読むことができます。
仕組みは簡単です。これは任意のオブジェクトのクローンを作成でき、オブジェクトはシリアル化可能などのインターフェイスを実装する必要はありません。
Cloner cloner = new Cloner();
MyClass clone = cloner.deepClone(o);
// clone is a deep-clone of o
ただし、これは何千ものオブジェクトを複製する可能性があることに注意してください(複製されたオブジェクトがそのように多くの参照を持っている場合)。また、ファイルまたはストリームをコピーすると、JVMがクラッシュする可能性があります。
ただし、ストリームなどのクラスの特定のインスタンスは無視できます。このライブラリとそのソースをチェックアウトする価値があります。
一般的な方法で実装できるとは思いません。
とりあえず、一般的ではない方法で質問を書き直すことをお勧めします
これは簡単ではありません。次のような回避策を使用しています。
1)マップをjson文字列に変換します。 (たとえば、Google Gsonを使用)
2)json文字列を変換してマップに戻します。
パフォーマンスの問題がありますが、これが最も簡単な方法です。