带有字符串连接的 Java 8 收集器

标签 java java-stream

我有这门课:

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/

相关文章:

java - 在 Java 8 中的当前流方法中使用 Stream 方法

java - 如何在方法中流式传输 Java List (Varargs) 的值?

java - Android AsyncTask/Service 在任务完成前被杀死

java - DecimalFormat 点和逗号作为十进制分隔符

java - 我们如何比较两个键和值不区分大小写的 HashMap

java - 如何从两个流中获取相似的元素并收集由此形成的对而不丢失顺序?

Java-根据现有对象列表从流中获取新对象列表

java - 如何使用流将所有映射键值连接成一个字符串,并对每个值进行替换?

java - jTextField 只接受字母和空格

java - 在 JDBC 中使用变量