0

我正在使用以下代码从 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 类型,则进行一些其他操作。我如何检查对象并将其传递给另一个函数。

4

2 回答 2

2

由于这是 a HashMultimapwhich 也是 a SetMultimap,所以当您调用hmm.get(ky)返回的值将是Set该键的所有值中的 a 。然后,您应该能够遍历 中的每个值Setinstanceof在这些值上使用。如果每个键不会有多个值,则不应使用 aMultimap开头,而应仅使用 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);
    }

关键是调用get()aHashMultimap返回一个Set值而不是单个值。

于 2010-10-26T16:26:05.913 回答
1

使用 instanceof 关键字。

像这样:
if (item instanceof Element) //Do things

于 2010-10-26T13:14:27.040 回答