带条件的java8 lambda分组

时间:2014-08-12 14:19:04

标签: java lambda java-8

Java8和Lambdas - 这是我现在的游戏。另一个问题/问题。我用lamda进行了分组,看起来像这样:

Map<Question, List<Answer>> temp = foo.stream().flatMap(x -> x.getValue().stream()).flatMap(
        x -> x.getAnswers().stream()).collect(
        Collectors.groupingBy(
                zz -> zz.getQuestion(),
                Collectors.mapping(z -> z, Collectors.toList())
        )
);

我从Foo列表中找到了自己,这是一张问题地图,其中包含用户所做的汇总的答案清单。

问题
是否可以在分组时添加条件?
在这个例子中,我的Question.class有一个名为Weight的Double字段,有些问题将该字段设为null或值为0.0。 我在聚合地图中不需要它们,所以我想知道我可以在这里添加条件,还是需要迭代生成的Map?



修改
foo是Result.class的列表,x.getValue()返回AnswerSet.class的List,x.getAnswers()返回Answer.class的列表。 Answer.class有一个Question.class作为字段

1 个答案:

答案 0 :(得分:2)

foo.stream()
   .filter(q -> q.weight != null && q.weight != 0.0)
   .<continue what you were doing>