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