0

Apache CommonsMultiKeyMapを複数のキーでパラメータ化する方法はありますか? すなわち

MultiKeyMap<String, String, Integer, Float> m = new MultiKeyMap<String, String, Integer, Float>();

私はもともと raw を持っていましMultiKeyMapsたが、プログラムでこれらのマップが頻繁に使用されるため、それらをパラメーター化して一貫性を確保したいと考えています。

MultiKeysMultiKeyMap に保存しているデータには が必要なため、使用したくありませんMultiKey<String, String, Integer>。ただし、MultiKey1 つのタイプ (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インスタンスを作成する必要があると思います。これはリソースを大量に消費しますか、それともこれを回避する方法はありますか?

4

1 に答える 1