2

我有一张地图,其中的值是整数集。我想要做的是以尽可能最好的方式(仅使用 Java API 会很棒)所有整数集的联合。

Map<Long, Set<Integer>> map;

到目前为止我的想法是遍历地图的 values() 并手动添加到大集合中:

Set<Integer> bigSet = new HashSet<>();
Iterator<Set<Integer>> iter = map.values().iterator();
while(iter.hasNext())
    bigSet.addAll(iter.next());

由地图支持的工会收藏也很棒。不幸的是,我被 Java 7 困住了。

4

1 回答 1

6

一方面,您可以使用新的 Java 8 fluent interface

import static java.util.stream.Collectors.toSet;

Set<Integer> myUnion = map
        .values()
        .stream()
        .flatMap(set -> set.stream())
        .collect(toSet());

另一方面,如果您可以使用外部库,我建议您看看Guava 的 SetMultimap 。

于 2015-05-30T17:17:42.057 回答