我正在使用以下代码从Google HashMultimap获取和处理价值

    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类型,则执行其他操作。我如何检查对象并将其传递给另一个函数。

最佳答案

由于这是HashMultimap也是SetMultimap,因此当您调用hmm.get(ky)时,返回的值将是该键的所有值的Set。然后,您应该能够遍历Set中的每个值,并对这些值使用instanceof。如果每个键都不会有多个值,则不应该使用Multimap开头,而应该使用常规的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);
    }


关键是在get()上调用HashMultimap会返回值的Set而不是单个值。

10-08 14:33