Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多键映射与部分查询_Java_Collections_Map_Key_Apache Commons - Fatal编程技术网

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]