[英]Break from the inner nested stream when no elements are passed through filter
[英]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.