3

Map<String , List>ehcache からオブジェクトを取得しています。そのオブジェクトを更新したくありません。むしろ、キャッシュされたコンテンツを一時的Mapにコピーしたいのです。メインの値を変更してもコピーの値が変更されないように、 a のコピーを作成するにはどうすればよいですか。MapMapMapMap

4

2 に答える 2

4

それは本当にあなたが何をしたいかによって異なります。浅いコピーが必要な場合は、ポールの答えで十分です。または、次のことを行います。

Map<String, Object> fromEhcache = ...
Map<String, Object> copy = new HashMap<String, Object>(fromEhcache);

ただし、ディープ コピーが必要な場合、つまりマップのすべてのオブジェクトもコピーする必要がある場合は、マップ全体を繰り返し、各オブジェクトを個別にコピーする必要があります。さらに、マップ内のオブジェクトは、ある種のコピー コンストラクターをサポートする必要があります。

于 2012-06-20T14:47:52.457 に答える
1

新しいMapインスタンスを作成してから を呼び出しputAll(Map)、元の を渡すことができますMap。これにより、すべてのキーと値のマッピングが新しいインスタンスにコピーされます。

Guava を使用している場合は、Maps.newHashMap(Map)etc. を呼び出して同じ効果を 1 行で実現することもできます。

于 2012-06-20T14:41:26.193 に答える