我正在使用以下代码获取&谷歌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));
在上面的代码中,如果map元素(或条目)是Element类型,那么我想做一些操作。如果是HashMultimap类型,则执行其他操作。如何检查并将对象传递给另一个函数。
答案 0 :(得分:2)
由于这是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
个值,而不是单个值。
答案 1 :(得分:1)
使用instanceof关键字。
像这样:if (item instanceof Element) //Do things