以下代码:
public class Application {
public static void main(String[] args) {
List<Foo> foos = Arrays.asList(
new Foo().setStatus(StatusInfo.ORDER_PLACED).setOrderNo(1l),
new Foo().setStatus(StatusInfo.ORDER_PLACED).setOrderNo(2l),
new Foo().setStatus(StatusInfo.ORDER_PLACED).setOrderNo(3l),
new Foo().setStatus(StatusInfo.ORDER_CANCELLED).setOrderNo(4l)
);
List<Tuple2<String, Seq<Foo>>> list1 = Seq.seq(foos).grouped(foo -> {
System.out.println("Foo1: " + foo);
return foo.getStatus().toString();
}).toList();
Map<String, List<Foo>> list2 = Seq.seq(foos).groupBy(foo -> {
System.out.println("Foo2: " + foo);
return foo.getStatus().toString();
});
System.out.println("Foos size: " + foos.size());
System.out.println("Size 1: " + list1.size());
System.out.println("Size 2: " + list2.size());
}
@Data
static class Foo {
StatusInfo status;
Long orderNo;
}
public enum StatusInfo{
ORDER_PLACED, ORDER_CANCELLED
}
}
给出输出:
Foo1: Application.Foo(status=ORDER_PLACED, orderNo=1)
Foo1: Application.Foo(status=ORDER_PLACED, orderNo=2)
Foo1: Application.Foo(status=ORDER_PLACED, orderNo=3)
Foo2: Application.Foo(status=ORDER_PLACED, orderNo=1)
Foo2: Application.Foo(status=ORDER_PLACED, orderNo=2)
Foo2: Application.Foo(status=ORDER_PLACED, orderNo=3)
Foo2: Application.Foo(status=ORDER_CANCELLED, orderNo=4)
Foos size: 4
Size 1: 1
Size 2: 2
为什么groupBy
和grouped
函数的结果不同?
答案 0 :(得分:1)
jooq库中有一个错误。 这是修复:https://github.com/jOOQ/jOOL/issues/271
去年没有发布,所以此版本不在发行版中。如果有人需要,我构建了最新的master并部署到bintray:https://bintray.com/nikitapanteleev/jOOL/jOOL/0.9.13