[英]Using Java 8 Streams to update collections from another collection of a different type
[英]Remove some values from collection of collections using java streams
想象一个集合的集合(集合的集合):
Set<Set<Long>> setOfSets = new HashSet<>();
Set<Long> set = new HashSet<>();
set.add(4L);
set.add(3L);
set.add(8L);
setOfSets.add(set);
set = new HashSet<>();
set.add(6L);
set.add(7L);
set.add(4L);
setOfSets.add(set);
如何使用 java 流从此集合中删除给定值? 例如,如果给定值为 4,则预期集合应等于 {[3, 8][6, 7]}。 我知道这可以通过使用嵌套的 for 循环遍历集合来实现,但我对使用流特别感兴趣。
Set<Set<Long>> result = setOfSets.stream()
.map(s -> s.stream()
.filter(id -> (id != 4L))
.collect(Collectors.toSet()))
.collect(Collectors.toSet());
由于它们是按引用传递的,因此您可以直接对它们进行变异:
int removeNum = 4;
setOfSets.forEach(s -> s.remove(removeNum));
//add it to each
setOfSets.forEach(s -> s.add(removeNum));
虽然从技术上讲,它不是 stream 解决方案,但它几乎与这些思路一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.