複数の値を複数のキーに関連付けることができるコレクションタイプが必要です。理想的には、Mapのように使用しますが、mapは、特定のキーが単一の値を生成することを目的としています。
以下は、これをどのように使用したいかの例です。
@Test
public void multipleItems() {
Index<String, String> index = new Index<String, String>();
index.add("key1", "value1");
index.add("key2", "value2");
index.add("key1", "value3");
index.add("key2", "value4");
index.add("key1", "value5");
List<String> values = index.get("key2");
assertEquals(2, values.size());
assertEquals("value2", values.get(0));
assertEquals("value4", values.get(1));
}
JVMでの実装を認識していません。これは自分で実装することもできますが、既存の実装を見つけたいと思っています。
推奨事項?
解決
以下の推奨事項に基づいて、私は最終的にグアバを使用しました(そして、より良い解決策を見つけた場合に備えて、これをアプリの残りの部分に公開したくなかったので、それをラップしました。
これらの設定を使用して、gradleスクリプトに含めました。 'com.google.guava:guava-collections:r03'
私の「ラッパー」クラスは次のようになります。
public class Indexes<K, V> {
private HashMultimap<K, V> keyToValuesMap = HashMultimap.create();
public void put(K key, V value) {
this.keyToValuesMap.put(key, value);
}
public Set<V> get(K key) {
return this.keyToValuesMap.get(key);
}
}