[英]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.