【发布时间】:2017-10-13 19:43:11
【问题描述】:
我有以下对象:
class Event {
private LocalDateTime when;
private String what;
public Event(LocalDateTime when, String what) {
super();
this.when = when;
this.what = what;
}
public LocalDateTime getWhen() {
return when;
}
public void setWhen(LocalDateTime when) {
this.when = when;
}
public String getWhat() {
return what;
}
public void setWhat(String what) {
this.what = what;
}
}
我需要按年/月 (yyyy-mm) 和事件类型汇总,然后计数。例如下面的列表
List<Event> events = Arrays.asList(
new Event(LocalDateTime.parse("2017-03-03T09:01:16.111"), "EVENT1"),
new Event(LocalDateTime.parse("2017-03-03T09:02:11.222"), "EVENT1"),
new Event(LocalDateTime.parse("2017-04-03T09:04:11.333"), "EVENT1"),
new Event(LocalDateTime.parse("2017-04-03T09:04:11.333"), "EVENT2"),
new Event(LocalDateTime.parse("2017-04-03T09:06:16.444"), "EVENT2"),
new Event(LocalDateTime.parse("2017-05-03T09:01:26.555"), "EVENT3")
);
应该产生以下结果:
Year/Month Type Count
2017-03 EVENT1 2
2017-04 EVENT1 1
2017-04 EVENT2 2
2017-04 EVENT3 1
是否知道(如果是,如何)我可以使用 Streams API 实现这一目标?
【问题讨论】:
-
您说要按月汇总,但结果中还包含年份。 和 年的月份也是如此;还是按月汇总但同时显示年份?
-
我的意思是按年/月 (yyyy-mm) 汇总。我已经编辑了帖子:)
-
那么这里的任何答案都符合条件:)
标签: java java-8 java-stream