【发布时间】:2018-12-20 15:03:39
【问题描述】:
通过聚合和分组将一个对象映射到另一个对象
我有课
class Q {
String username;
int taskId;
double timediff;
// constructor
}
我需要把它转换成
class ToQ {
String username;
int noOfTasks;
double sum;
// constructor
}
所以内涵是按用户名分组,taskIds的计数,timediff的总和。
这个列表
List<Q> qs = new ArrayList<>();
qs.add(new Q("tom", 2, 2.0));
qs.add(new Q("tom", 6, 1.0));
qs.add(new Q("harry", 8, 0.03));
ToQ 的输出应该为
new ToQ("tom",2,3);
new ToQ("harry",1,0.03);
我尝试使用分组功能,但它生成 HashMap 但不确定如何转换为对象。
Map<String, Double> collect = qs
.stream()
.collect(groupingBy(Q::getUsername, summingDouble(Q::getLocalDateTime)));
【问题讨论】:
-
我想知道“stark”和“tom”之间的关系是什么?
-
它们是一样的 :-)
标签: java java-8 java-stream grouping