-2

Object (メンバー変数として 2 つの String オブジェクトを持つ) と、3 つの異なる String を含む Object としての値を持つ HashMap があります。

言う:

Map<ReqDTO , RespDTO> map = new HashMap<ReqDTO ,RespDTO> ();

次の値があるとします:

    キー値
1 ("str1","1") - ("1","2","3")
2 ("str2","2") - ("a","b","c")
3 ("str3","3") - ("1","2","3")
4 ("str4","4") - ("v","b","g")
5 ("str5","5") - ("1","2","3")

そのようなレコードが何千もある場合 (これは私のアプリケーションではキャッシュです)、レコード番号の VALUE 部分: 1,3,5 は 3 つのオブジェクトのメモリを保持しています。1,3,5 レコードの KEYS を作成して、別のメモリとしてではなく、VALUES (この場合は 1,2,3 ) の同じインスタンスを指すようにします。

HashMap に同じバリアントはありますか? または他のデータ構造が行います..

:一度だけロードされ、これに対して実行されるすべての操作は読み取り専用です。パフォーマンスを集中的にするためにデータ構造を優先する必要があります。つまり、挿入にコストがかかる可能性があります。

4

2 に答える 2

1

両方のキーのマップに同じオブジェクトを配置すると、両方とも同じオブジェクトになります。オブジェクトのインスタンスが互いに異なる場合は、.equals()さらに興味深いものになります。Flyweight値オブジェクトに使用してみるかvalues()、マップをたどることができます。値オブジェクトが見つかったequals()場合は、渡されたオブジェクトの代わりにそのオブジェクトにキーを入れてください。

誰かが、どこかで、Mapあなたが望むことを行う実装を既に書いている可能性がありますが、私の最善の推奨事項は、Google を使用し、彼らが SEO に長けていることを願うことです。

于 2013-08-26T13:50:14.273 に答える