2

我将如何遍历一个字符串“key”具有的列表“values”。

Map<String, List<wordsStreamed>> hm = new HashMap<String, List<wordsStreamed>>();
hm.put(wordChoosen, sw.streamMethod());

hm 有一个键和超过 10,000 个值。我想迭代这些值,以便我可以将我的密钥与所有值进行比较。我也想知道这段代码是否是从类列表中获取我的字符串值的最佳方法。

hm.values().iterator().next().get(i).toString()
4

3 回答 3

3

要迭代您HashMap的值,您可以使用快速枚举。

您在这里可能需要的是遍历键集,然后访问List每个值并遍历每个List的项目以将其与键进行比较。

例如:

Map<String, List<Object>> hm = new HashMap<String, List<Object>>();
for (String key : hm.keySet()) {
    // gets the value
    List<Object> value = hm.get(key);
    // checks for null value
    if (value != null) {
        // iterates over String elements of value
        for (Object element : value) {
            // checks for null 
            if (element != null) {
                // prints whether the key is equal to the String 
                // representation of that List's element
                System.out.println(key.equals(element.toString()));
            }
        }
    }
}

注意我已经用WordsStreamed类替换了你的Object类。

于 2013-10-17T17:08:02.910 回答
0

我想迭代这些值,以便我可以将我的密钥与所有值进行比较

看起来像滥用数据结构,通常你不应该在这种情况下迭代,值应该用键映射

您应该输入与键逻辑映射的值,因此在检索时您不必遍历所有键和关联值

于 2013-10-17T17:06:09.480 回答
0

更有效的方法

for(List<String> valueList : map.values()) {
  for(String value : valueList) {
    ...
  }
}

详情请点击

于 2021-09-06T15:13:21.670 回答