TreeMap<String, Set<String>> 的 for-each 循环中 getValue 的结果

Result of getValue in for-each loop for TreeMap<String, Set<String>>

(刚刚设置)。

TreeMap< String, Set< String>> map;

字符串是名称,集合是不同的时间戳,所以每个时间戳可以有多个名称,如果都选择了相同的时间

...

(发起)

map = new TreeMap< String, Set< String>>;

...

for (Map.entry< String, Set< String>> mapEx : map.entrySet()){

这里 map.getValue 会产生什么结果? 比如,下面的代码会导致我能够从地图中查看 Set 部分中的每个字符串并打印它们吗?

for(String stringEx : map.getValue()){

  System.Out.Println(stringEx);

}

map.getValue 确实会 Set<String>

如果你有这个循环

for(String stringEx : mapEx.getValue()){

  System.out.println(stringEx);

}

在这个循环中

     for (Map.entry< String, Set< String>> mapEx : map.entrySet()){ 
        // For each map entry value is set 
//of strings which can be printed by the loop shown before
     }

组合循环

for (Map.entry< String, Set< String>> mapEx : map.entrySet()){ 

       for(String stringEx : mapEx.getValue()){

      System.out.println(stringEx);

    }

         }

我会提出 3 种不同的方法来实现这一点:

使用 Java 8 Stream:遍历值,然后从每个 Set

遍历 String
map.values().stream().flatMap(Set::stream).forEach(System.out::println);
//  over Set        //over String from each Set       
// System.out::println === s -> System.out.println(s) and can be whatever you want   

每个人的经典 差异 Sets :

for (Set<String> set : map.values()) {
    for (String stringEx : set) {
        System.out.println(stringEx);
    }
}

对于不同的 entries 上的每个,然后取它们的值 (Set<String>):

for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
    for (String val : entry.getValue()) {
        System.out.println(val);
    }
}