考虑我有以下代码
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
获取布尔值
答案 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/ .. 谓词是一个声明,可能是真或假,取决于其变量的值。