【发布时间】:2016-10-12 14:57:54
【问题描述】:
我有一个类似以下的课程。
public class Votes{
String name;
int likes;
int dislikes;
//constructors, getters and setters
}
我有一个如下列表。
List<Votes> votesList;
假设我在上面的列表中填充了一些元素。我想声明一个在该列表中执行分组和求和操作的方法。
例如,假设我将列表中的以下元素作为该方法的input。
votesList.add(new Votes("A", 10, 5));
votesList.add(new Votes("B", 15, 10));
votesList.add(new Votes("A", 20, 15));
votesList.add(new Votes("B", 10, 25));
votesList.add(new Votes("C", 10, 20));
votesList.add(new Votes("C", 0, 15));
该方法应输出带有以下元素的List<Votes>。
("A", 30, 20),
("B", 25, 35),
("C", 10, 35)
有没有一种简单的方法可以在 Java8 中使用流、lambda 表达式来做到这一点?如果我只有一个 int 成员,我知道如何使用 collectors 来完成。
谁能解释一下我该如何解决这种情况?
【问题讨论】:
-
您必须编写自己的收集器。 docs.oracle.com/javase/8/docs/api/java/util/stream/…
-
@MarkoTopolnik 如果您能详细说明答案,我将不胜感激。 :))
-
@MarkoTopolnik 您能否对我的回答发表评论。 :)) 有什么改进的方法吗?
-
这不是一种纯粹的功能性方法,但谁在乎它是否有效。而且代码非常简单,优势很大。
标签: java multithreading lambda java-8 java-stream