我需要一种允许将多个值与多个键关联的集合类型。理想情况下,我会像使用 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);
}
}