我有这门课:
class Pair {
public String name;
public int age;
}
还有一个列表:
List<Pair> list = new LinkedList<>();
list.add(new Pair("One", 25));
list.add(new Pair("Two", 18));
list.add(new Pair("Three", 18));
list.add(new Pair("Four", 10));
哪里Pair
仅包含两个值, String
和一个int
.
我想按 age
对这些数据进行分组值,还连接 name
。最后我想获得 Map<Integer, String>
像这样:
25 - One
18 - TwoThree
10 - Four
我试过这个:
list.stream().collect(Collectors.groupingBy(Pair::getValue, /* Collectors.??? */));
有像summingInt
这样的方法,但找不到 String
的任何内容值(value)观。
我看到有一个Collectors.reducing
方法,我猜也许我们可以使用它,但不确定如何使用。
有没有一种优雅的方式来实现 Collectors
中的构建?或者我必须自己做?
最佳答案
只需使用Collectors.mapping(Pair::getName, Collectors.joining())
。 joining
处理字符串,mapping
从pair对象中提取它们。
关于带有字符串连接的 Java 8 收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248787/