簡體   English   中英

從流的內部過濾器獲取布爾值

[英]Get boolean value from inner filter of stream

考慮我有以下代碼

public static void main(String[] args) {
    Map<String, List<String>> map = new HashMap<>();
    map.put("a", Arrays.asList("1", "2", "3", "4"));
    map.put("b", Arrays.asList("6", "7", "4", "5"));
    map.entrySet().stream().filter(t -> t.getValue()
            .stream().filter(v -> Integer.valueOf(v) > 0)
            .**WhatShouldIputThereToMakeitBolean**)
            .collect(Collectors.toSet());
}

我想要做的是我有一個地圖,其值為字符串列表。

這些值將轉換為整數,如果值大於給定值,則會檢查這些值,如第二個/內部過濾器。

我能夠把它分成小部分,因為我使用了兩個過濾器,但是從內部過濾器我無法獲得布爾值,因此我將得到所需的流,然后將使用flatmat(Collection :: stream)合並然后將轉換為設置(以避免重復),因為兩個列表都包含一個公共值,即4

我需要的輸出必須是Integer和single set的形式,它們將被合並為[1,2,3,4,5,6],這里的值4是重復的,如果它必須限制結果集中的值,如果值小於然后提供了價值

我有一個簡單的查詢,因為我正在迭代map並且該map包含list作為值,這里我無法從內部filter獲取boolean值

如果我理解正確,您需要首先展平地圖列表,然后收集大於0的唯一值到Set

您可以使用map.values().stream()來獲取地圖的值。

Set<Integer> set = map.values().stream()
    .flatMap(Collection::stream)
    .map(Integer::valueOf)
    .filter(num -> num > 0)
    .collect(Collectors.toSet());

這可能對你有幫助,謂詞: http//howtodoinjava.com/java-8/how-to-use-predicate-in-java-8/ ..謂詞是一個可能是真或假的陳述,取決於值它的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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