Apache CommonsMultiKeyMap
を複数のキーでパラメータ化する方法はありますか? すなわち
MultiKeyMap<String, String, Integer, Float> m = new MultiKeyMap<String, String, Integer, Float>();
私はもともと raw を持っていましMultiKeyMaps
たが、プログラムでこれらのマップが頻繁に使用されるため、それらをパラメーター化して一貫性を確保したいと考えています。
MultiKeys
MultiKeyMap に保存しているデータには が必要なため、使用したくありませんMultiKey<String, String, Integer>
。ただし、MultiKey
1 つのタイプ (MultiKey<String>
または MultiKey<Integer>
) のキーのみをサポートします。これに対する回避策がある場合、私は提案を受け付けています。
明確にするために、私が解決したい全体的な問題は次のとおりです。MultiKeyMaps
プログラム内の にパラメーター化することで同じタイプのキーがあることを確認したいのですが、キー内のクラスが異なります ( <K, K, K, V> = <String, String, Integer, Float>
)。
編集:(現在削除された回答で)提案されました を使用しTriple<String, String, Integer>
、試しました:
private static MultiKeyMap<Triple<String, String, Integer>, Float> multiKeyMap = new MultiKeyMap<Triple<String, String, Integer>, Float>();
Triple<String, String, Integer> t = Triple.of("asdf", "asdf", 4);
multiKeyMap.put(t, 5);
ただし、このステートメントの 3 行目では、put(Triple<String, String, Integer> key1, Triple<String, String, Integer> key2, Float value)
. 私の質問はこれです:この答えで、今は必要ありませんMultiKeyMap
か?今使うべきMap<Triple<String, String, Integer>, Float>
ですか?
また、このマップを頻繁に (大量のデータを使用して) 反復する必要があることも注目に値します。これは、必要に応じてメソッドMultiKeyMap
のパラメーターを変更するだけでよいため、パラメーター化されていない場合は簡単でした。get()
を使用するTriple
と、反復ごとに新しいTriple
インスタンスを作成する必要があると思います。これはリソースを大量に消費しますか、それともこれを回避する方法はありますか?