Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 从google HashMultimap访问元素时出现问题_Java_Guava_Multimap - Fatal编程技术网

Java 从google HashMultimap访问元素时出现问题

Java 从google HashMultimap访问元素时出现问题,java,guava,multimap,Java,Guava,Multimap,我使用下面的代码从GoogleHashMultiMap获取和处理值 HashMultimap hmm = new HashMultimap(); HashMultimap hmm2 = new HashMultimap(); Element ele; : hmm2.put("name","Amit"); hmm.put("Amit",ele); hmm.put("rohit",hmm2); : Iterator itr = hmm

我使用下面的代码从GoogleHashMultiMap获取和处理值

    HashMultimap hmm = new HashMultimap();
    HashMultimap hmm2 = new HashMultimap();
    Element ele;
:
    hmm2.put("name","Amit");
    hmm.put("Amit",ele);
    hmm.put("rohit",hmm2);
 :   
    Iterator itr =  hmm.keys().iterator();
    String ky = (String) itr.next();
    System.out.println(hmm.get(ky));
    ky = (String) itr.next();
    System.out.println(hmm.get(ky));

在上面的代码中,若映射元素(或条目)是元素类型,那个么我想做一些操作。如果是HashMultimap类型,则执行其他一些操作。如何检查对象并将其传递给另一个函数。

使用instanceof关键字

像这样:

if(item instanceof Element)//做事

使用instanceof关键字

像这样:

if(item instanceof Element)//Do things

因为这是一个
HashMultimap
,也是一个
SetMultimap
,当调用
hmm.get(ky)
时,返回的值将是该键所有值的
Set
。然后,您应该能够遍历
集合中的每个值,并对这些值使用
instanceof
。如果每个键没有多个值,您不应该首先使用
Multimap
,而应该只使用normal
HashMap

    HashMultimap hmm = HashMultimap.create();
    HashMultimap hmm2 = HashMultimap.create();
    Element ele = new Element();
    hmm2.put("name", "Amit");
    hmm.put("Amit", ele);
    hmm.put("rohit", hmm2);
    Iterator itr = hmm.keys().iterator();
    String ky = (String) itr.next();

    Set elements = hmm.get(ky);
    Iterator elementsItr = elements.iterator();
    Object val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

    ky = (String) itr.next();
    elements = hmm.get(ky);
    elementsItr = elements.iterator();
    val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

关键的一点是,在
HashMultimap
上调用
get()
会返回一组值,而不是一个值。

因为这是一个
HashMultimap
,当调用
hmm.get(ky)时,它也是一个
SetMultimap
返回的值将是该键所有值的
集。然后,您应该能够遍历
集合中的每个值,并对这些值使用
instanceof
。如果每个键没有多个值,您不应该首先使用
Multimap
,而应该只使用normal
HashMap

    HashMultimap hmm = HashMultimap.create();
    HashMultimap hmm2 = HashMultimap.create();
    Element ele = new Element();
    hmm2.put("name", "Amit");
    hmm.put("Amit", ele);
    hmm.put("rohit", hmm2);
    Iterator itr = hmm.keys().iterator();
    String ky = (String) itr.next();

    Set elements = hmm.get(ky);
    Iterator elementsItr = elements.iterator();
    Object val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

    ky = (String) itr.next();
    elements = hmm.get(ky);
    elementsItr = elements.iterator();
    val = elementsItr.next();
    if (val instanceof Element) {
        doElementStuff((Element) val);
    }

关键的一点是,在
HashMultimap
上调用
get()
会返回一组值,而不是一个值。

您是否生活在Java 1.4世界中?使用通用的!这是我的项目限制。我什么都做不了你生活在Java 1.4世界吗?使用通用的!这是我的项目限制。我不能做任何事情如果你问我,那么它是完整的代码。如果你问@Woot4Moo,那么我想他正在接受对象类型的项。如果你问我,那么这是完整的代码。如果你问@Woot4Moo,那么我想他正在接受对象类型的项,你是在谈论访问值,比如
SetMultimap o=(SetMultimap)hmm.get(ky)。它给出了运行时错误。更新了答案以尝试进一步澄清。您是在谈论访问值,如
SetMultimap o=(SetMultimap)hmm.get(ky)。它给出了运行时错误。更新了答案以尝试进一步澄清。