【问题标题】:How to Use Guava MultiMap to store duplicate values against same key and retrieve keys and values如何使用 Guava MultiMap 存储针对相同键的重复值并检索键和值
【发布时间】:2020-07-22 19:59:49
【问题描述】:

这是我尝试过的

我想要 HashMap 的键和值....

帮我遍历这个MultiMap,得到HashMap

的键和值
Multimap<String, HashMap> _multiMap= ArrayListMultimap.create();
Collection col = _multiMap.get(key);

Iterator<HashMap> iterator = col.iterator();

while (iterator.hasNext()) {
    String _key = (String) iterator.next().get(key);
    String _value = (String) iterator.next().get(value);
}

但它抛出了一些错误,即,

java.util.NoSuchElementException 
at java.util.ArrayList$Itr.next(ArrayList.java:862) 
at com.google.common.collect.AbstractMapBasedMultimap$Wrapped 
Collection$Wrapped Iterator.next(AbstractMapBasedMultimap.java:486)

【问题讨论】:

  • 你在每次调用hasNext()时都调用iterator.next()两次,你不会在上调用hasNext()next() /i> 迭代器,并且您到处都在使用原始类型。所有这些都是错误。
  • 什么是dbMap?您在dbMap.iterator() 上调用hasNext(),然后使用从multiMap 检索到的某个集合的iterator。什么是keyvalue 变量?
  • 每次通过 while 循环时,您还会得到一个 new dbMap.iterator(),这会将其重置为开头。
  • 嗨,@Louis Wassermna ......即,拼写错误我只有 iterator.hasNext()
  • @SivaReddy 这就是为什么你应该做一个最小的例子来展示你的例子并且有效,而不是模糊地复制你的问题的代码。

标签: java guava multimap


【解决方案1】:

我得到了答案..

Multimap<String, HashMap> _multiMap= ArrayListMultimap.create();
Collection col = _multiMap.get(key);

Iterator<HashMap> iterator = col.iterator();

while (iterator.hasNext()) {
    HashMap _hashMap =  iterator.next();
    _hashMap.get(key);
    _hashMap.get(value)
}

【讨论】:

    猜你喜欢
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多