如何按一系列可能的值对列表进行分组?如果我有班
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";
这会导致编译错误。怎么做?
代替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] 删除。
我来说两句