7

SortedMultiSet Google による決定は(stackoverflow question)の決定と似ていますか、それとも 使用されていないためですMultiKeyMapか?

MultiKeyMapクラスメンバーとして複数のキーを含むキーとしてカスタムクラスを使用することもできることを認識しています。逆に、 の get を呼び出すときに複数のキーを指定するという概念が気に入っていますMultiKeyMap

Apache のバージョンMultiKeyMapは素晴らしいですが、Generics が非常に不足しているため、Google Collections を調べて最新の実装を探しました。Google がまだサポートしていない理由や、より良い代替手段がある場合は、返信してください。

4

3 に答える 3

11

参考までに、受け入れられた回答は 2010 年 3 月に回答されましたが、2010 年 9 月の時点で Guava にはTable.

于 2013-09-19T17:06:44.123 に答える
7

「テーブル」と呼ばれる 2 層のマップ (K1 は「行キー」、K2 は「列キー」) の非常に優れた実装があり、まだリリースされていません。ただし、過去 2 つの鍵は、収穫逓減です。

于 2010-03-03T23:44:36.890 に答える
3

ジェネリックは、ここでの実装のショーストッパーかもしれないと思います。Map インターフェイスだけを見ると、キー タイプ (K) と値タイプ (V) の汎用指定子があります。実装を複数のクラス (キー コンポーネントの数ごとに 1 つ) に分割せずに、ジェネリックを使用して簡単に指定できるとは思えません。

それぞれにクラスが必要です。

MultiKeyMap2<K1,K2,V>
MultiKeyMap3<K1,K2,K3,V>
MultiKeyMap4<K1,K2,K3,K4,V>
MultiKeyMap5<K1,K2,K3,K4,K5,V>

基礎となる実装は、基本的にあなたが提案することを行っています(カスタムクラスを使用しています)。ただし、正式にクラスを作成するわけではなく、すべてがインライン化されています。それは本当に実装の詳細です。しかし、Google コレクションを使用して同じことを実行するカスタム クラスを使用するには、hashCode() と equals() を実装することでほぼ同じように動作します。

于 2010-03-03T16:20:50.937 に答える