我找到了通过POJO中的某个字段名称对对象进行分组的代码.以下是代码:
public class Temp {
static class Person {
private String name;
private int age;
private long salary;
Person(String name, int age, long salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return String.format("Person{name='%s', age=%d, salary=%d}", name, age, salary);
}
}
public static void main(String[] args) {
Stream<Person> people = Stream.of(new Person("Paul", 24, 20000),
new Person("Mark", 30, 30000),
new Person("Will", 28, 28000),
new Person("William", 28, 28000));
Map<Integer, List<Person>> peopleByAge;
peopleByAge = people …Run Code Online (Sandbox Code Playgroud) 我有一个Java对象列表,我需要减少它应用聚合函数,如通过数据库选择.
注意:数据是从多个数据库和服务调用计算的.我希望有数千行,每行总是会有相同数量的"单元格".此数量在执行之间变化.
样品:
假设我的数据List以Object[3](List<Object[]>)表示,我的数据可能是:
[{"A", "X", 1},
{"A", "Y", 5},
{"B", "X", 1},
{"B", "X", 2}]
Run Code Online (Sandbox Code Playgroud)
样本1:
SUM索引2,按索引0和1分组
[{"A", "X", 1},
{"A", "Y", 5},
{"B", "X", 3}]
Run Code Online (Sandbox Code Playgroud)
样本2:
MAX超过索引2,按索引0分组
[{"A", "Y", 5},
{"B", "X", 2}]
Run Code Online (Sandbox Code Playgroud)
有人知道一些可以在Java中模拟这种行为的框架或api吗?
我的第一个选择是在NO-SQL数据库(如Couchbase)中插入所有数据,然后应用Map-Reduce,最后得到结果.但是这个解决方案有很大的开销.
我的第二个选择是嵌入一个Groovy脚本,但它也有很大的开销.