Java流分组按条件

Nopens:

如何按一系列可能的值对列表进行分组?如果我有班

class Foo{
   int value;
}

然后是foos List<Foo>list列表

list.stream().collect(Collectors.groupingBy(Foo::getValue));
            

会将具有相同价值的我的foos收集到一组中。但是我想将一系列值分组。例如

values < 5 in group "A"
values > 5 && < 25 in group "B"
values >= 25  in group "C"

或另一个示例:假设我有一个整数列表:

List<Integer> list = List.of(2,3,4,9,11,17,28,29,32);
list.stream().collect(Collectors.groupingBy(
            classifier, 
            Collectors.toList()));

我试图把东西分类

 i < 5 ? "A": i >= 5 && i < 25 ? "B" : "C";

这会导致编译错误。怎么做?

尼古拉斯·布斯凯(Nicolas Bousquet):

代替Foo::getValue,提供一个函数给它所属的组:

public class B {
    public static String group(int integer) {
        if (i < 5) {
             return "A";
        } else if (i < 25) {
            return "B";
        }
        return "C";
    }
}

然后:

list.stream().collect(Collectors.groupingBy(B::group));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章