我正在使用以下代码从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
而不是单个值。