从流的内部过滤器获取布尔值

时间:2016-09-15 05:08:34

标签: java java-8

考虑我有以下代码

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)合并然后将转换为set(以避免重复),因为两个列表都包含一个公共值,即4

我需要的输出必须是Integer和single set的形式,它们将像[1,2,3,4,5,6]一样合并,这里的值4是重复的,如果它必须限制结果集中的值,如果值小于提供值

我有一个简单的查询,因为我正在迭代map并且该map包含list作为值,这里我无法从内部filter获取布尔值

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您需要首先展平地图列表,然后收集大于example :- List = [1,5,12,9], Y is (nth0 $ (0, List)) + (nth0 $(3,List)), %add the 1st and 4th elements of this list writeln(Y). %prints 10 0的唯一值。

您可以使用Set来获取地图的值。

map.values().stream()

答案 1 :(得分:0)

这可能对你有所帮助,Predicate:http://howtodoinjava.com/java-8/how-to-use-predicate-in-java-8/ .. 谓词是一个声明,可能是真或假,取决于其变量的值。