繁体   English   中英

迭代HashMap <String, List<Class> &gt;

[英]Iterate over HashMap<String, List<Class>>

我将如何迭代一个字符串“key”具有的列表“值”。

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

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

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

要迭代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()));
            }
        }
    }
}

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

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

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

你应该输入那些用键逻辑映射的值,这样在检索时你不必遍历它们所有的键和相关的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM