Google コレクションが Apache コレクションのように MultiKeyMap をサポートしないのはなぜですか?
-
24-09-2019 - |
質問
Google による決定は、 SortedMultiSet
(スタックオーバーフローの質問)それとも用がないからですか? MultiKeyMap
?
の代替案であることは承知しています MultiKeyMap
複数のキーをクラス メンバーとして含むカスタム クラスをキーとして使用することができます。逆に、私は get を呼び出すときに複数のキーを指定するという概念が好きです。 MultiKeyMap
.
Apache のバージョン MultiKeyMap
は素晴らしいのですが、ジェネリックが不足しているため、最新の実装を求めて Google コレクションを検討しました。Google がまだサポートしていない理由、またはより良い代替手段がある理由をご存じの方がいらっしゃいましたら、ご返信ください。
解決
私たちは、「テーブル」と呼んで、二重構造のマップ、(K1「は、行キー」で、K2は、「列のキー」である)の非常に素晴らしい実装を持っている、と我々はそれがリリースもらっていませんまだ。 、収穫逓減されます。
しかし二つの鍵、過去他のヒント
参考までに、受け入れられた回答は 2010 年 3 月に回答されましたが、2010 年 9 月時点ではグアバが含まれていました。 Table
.
私は、ジェネリック医薬品がここ実装のための致命的かもしれないと思います。あなただけの地図インターフェースを見ればキータイプ(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>
基本的な実装は、基本的には(カスタムクラスを使用して)あなたがお勧め何やっています。しかし、それは正式にそれのためのクラスを作成していない、すべてがインライン化されます。それは本当に実装の詳細です。しかし、多くの私はhashCode()およびequals()。
を実装するために確信していると同じように動作するのと同じことを実行するために、Googleのコレクションにカスタムクラスを使用します