2013-10-17 155 views
1

我将如何迭代一个字符串“键”具有的列表“值”。遍历HashMap <String,List <Class>>

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() 
+1

_i想迭代所有的值,所以我可以比较我的密钥和所有的value_看起来像滥用'Map',一般你不应该在这种情况下迭代,值应该映射关键 –

+0

所以我不应该使用在这种情况下的地图? – BigApeWhat

+1

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

回答

2

要遍历您的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类。

0

我要遍历值,这样就可以与所有的价值

貌似数据结构的滥用比较我的钥匙,一般情况下不应有这样的场景进行迭代和值应与键映射

您应该输入那些逻辑上与键映射的值,以便在检索时不必遍历所有键和相关值

相关问题