Java 8 在Java 8中:生成集合<;V>;在所有列表中属于地图值的对象中<;K、 列表<;V>&燃气轮机;
我正在学习使用Java8和Stream做事情。我有一个问题,我正试图用java8流解决这个问题 我有一张类型为Java 8 在Java 8中:生成集合<;V>;在所有列表中属于地图值的对象中<;K、 列表<;V>&燃气轮机;,java-8,java-stream,Java 8,Java Stream,我正在学习使用Java8和Stream做事情。我有一个问题,我正试图用java8流解决这个问题 我有一张类型为Map accountMap 数据-{0000132861=[661361706206],0000135932=[661361706206],0000122989=[661361706206],0000138372=[31876613816761706206],0000138399=[661361706206] 我需要Map.value()中的所有唯一整数值。 比如[3187661381
Map accountMap
数据-{0000132861=[661361706206],0000135932=[661361706206],0000122989=[661361706206],0000138372=[31876613816761706206],0000138399=[661361706206]
我需要Map.value()中的所有唯一整数值。
比如[31876613816761706206]
当我执行accountMap.values()
时,我得到List
[[661361706206],[661361706206],[661361706206],[31876613816761706206],[661361706206]。
当我执行accountUserMap.values().stream().collect(Collectors.toSet())
时,我会得到相同的数据类型Set[[31876613816761706206],[661361706206]
,但所有重复列表都会被删除
我想删除所有重复的值,并想获得Set[31876613816761706206]
应该有一种有效的方法来实现这一点,而无需使用.forEach()或迭代列表。您可以使用
flatMap
来“展平”值流:
map.values().stream()
.flatMap(List::stream)
.collect(toSet());
或者,您可以使用3参数collect
:
map.values().stream()
.collect(HashSet::new, Set::addAll, Set::addAll);
您可以使用
flatMap
来“展平”值流:
map.values().stream()
.flatMap(List::stream)
.collect(toSet());
或者,您可以使用3参数collect
:
map.values().stream()
.collect(HashSet::new, Set::addAll, Set::addAll);
我本人从未使用过streams,但与其在上面的代码中只使用
stream()
,不如尝试:
stream().flatMap(p -> p.stream())
打开下一级列表
这就是在类似的上下文中所显示的内容我本人从未使用过流,但与其在上面的代码中只使用
stream()
,不如尝试:
stream().flatMap(p -> p.stream())
打开下一级列表
在类似的情况下,这也表明了这一点