【发布时间】:2021-09-19 10:56:48
【问题描述】:
Q.1) hi,java流的groupingby可以让自己的数组变吗?
这是实体
public class Test {
private int id;
private int itemId;
private int[] itemIds;
private boolean filter;
}
这是测试列表示例
{
test(id=1, itemId=1)
test(id=1, itemId=2)
test(id=1, itemId=3)
test(id=2, itemId=5)
test(id=2, itemId=11)
}
例如,我想按 test.id 分组
{
test(id=1, itemIds=[1,2,3])
test(id=2, itemIds=[5,11])
}
我该怎么办?
tests.stream().collect(Collectors.groupingBy(Test::getId), ?, ?);
Q.2) 我如何合并下面两个流代码?
tests.stream().filter(Test::isFilter).anyMatch(t -> {throw new Exception;});
tests.stream().collect(Collectors.groupingBy(Test::getId, ?, ?); // Q1 result
关于这个..?
tests.stream().filter(Test::isFilter).anyMatch(t -> {throw new Exception;}).collect(Collectors.groupingBy(Test::getId, ?, ?);
Q3) 上面Q1,Q2的流码比java 'for' 语法性能更好?
提前谢谢你。 :)
【问题讨论】:
-
对于第一季度,你可以简单地做
tests.stream().collect(Collectors.groupingBy(Test::getId));
标签: java java-stream collectors groupingby