0

(只是设置)。

TreeMap< String, Set< String>> map;

字符串是名称,而 Set 是不同的时间戳,因此每个时间戳都可以有多个名称,如果都选择了相同的时间

...

(发起)

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);

}
4

2 回答 2

1

map.getValueSet<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);

    }

         }
于 2017-08-22T19:21:37.413 回答
0

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

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

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);
    }
}
于 2017-08-22T20:12:59.850 回答