Java 多键映射与部分查询
我使用多个键搜索地图实现。我知道,但我不满意 我希望能够传递一个密钥并获取包含传递的密钥的所有条目,例如Java 多键映射与部分查询,java,collections,map,key,apache-commons,Java,Collections,Map,Key,Apache Commons,我使用多个键搜索地图实现。我知道,但我不满意 我希望能够传递一个密钥并获取包含传递的密钥的所有条目,例如 MultiKeyMap mkm = new MultiKeyMap(); mkm.put("key1", "key2", "key3", "1"); mkm.put("key1", "key22", "key33", "2"); mkm.put("key12", "key22", "key32", "3"); mkm.get("key1"); 返回null,但在本例中,我希望得到“1”和
MultiKeyMap mkm = new MultiKeyMap();
mkm.put("key1", "key2", "key3", "1");
mkm.put("key1", "key22", "key33", "2");
mkm.put("key12", "key22", "key32", "3");
mkm.get("key1");
返回null,但在本例中,我希望得到“1”和“2”
我自己的实现不是一个选项。我想使用一些我可以信任的东西。我认为番石榴有一个表实现
Table
在那里你可以做Table.get(key1)
或Table.get(key2)
。我认为每个表只支持两个键,但不确定。我想看看这个
我想你可以用
HashMap map=newhashmap();
ArrayList ls=新的ArrayList();
ArrayList ls2=新的ArrayList();
ls.添加(“第3项”);
ls.添加(“1”);
ls.添加(“第2项”);
ls.添加(“第22项”);
ls.添加(“第33项”);
ls.添加(“2”);
ls2.添加(“第22项”);
ls2.添加(“键32”);
ls2.添加(“3”);
地图放置(“键1”,ls);
地图放置(“键12”,ls2);
map.get(“键1”);
如果您可以将需求转过来并多次输入值,每个键一次,那么使用起来非常好:
Multimap<String, String> map = HashMultimap.create();
map.put("key1", "1");
map.put("key2", "1");
map.put("key3", "1");
map.put("key1", "2");
map.put("key22", "2");
map.put("key33", "2");
map.put("key12", "3");
map.put("key22", "3");
map.put("key32", "3");
Collection<String> values = map.get("key1");
System.out.println(values);
我想你想要的不是多键地图,你看了吗?我对您的示例有一个小问题-前面提到的guice Multimap只有在每次使用一个键时才能正常工作。不像您的示例
mkm.put(“key1”、“key2”、“key3”、“1”)代码>。否则,我认为MultiMap会很好地工作——在同一个包中,您会得到一大堆其他地图——如果您在那里找不到它,您将在任何地方都找不到它;)
Multimap<String, String> map = HashMultimap.create();
map.put("key1", "1");
map.put("key2", "1");
map.put("key3", "1");
map.put("key1", "2");
map.put("key22", "2");
map.put("key33", "2");
map.put("key12", "3");
map.put("key22", "3");
map.put("key32", "3");
Collection<String> values = map.get("key1");
System.out.println(values);
[2, 1]