Java 从google HashMultimap访问元素时出现问题
我使用下面的代码从GoogleHashMultiMap获取和处理值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
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
,而应该只使用normalHashMap
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
,而应该只使用normalHashMap
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)代码>。它给出了运行时错误。更新了答案以尝试进一步澄清。