簡體   English   中英

使用 java 流從 collections 集合中刪除一些值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM