java - 如何使用新的 1.8 流 API 连接字符串

标签 java java-8 java-stream

假设我们有一个简单的方法,它应该连接一个 Person 集合的所有名称并返回结果字符串。

public String concantAndReturnNames(final Collection<Person> persons) {
    String result = "";
    for (Person person : persons) {
        result += person.getName();
    }
    return result;
}

有没有办法在 1 行中使用新的流 API forEach 函数编写此代码?

最佳答案

你想做什么的官方文档:https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html

 // Accumulate names into a List
 List<String> list = people.stream().map(Person::getName).collect(Collectors.toList());

 // Convert elements to strings and concatenate them, separated by commas
 String joined = things.stream()
                       .map(Object::toString)
                       .collect(Collectors.joining(", "));

对于您的示例,您需要这样做:

 // Convert elements to strings and concatenate them, separated by commas
 String joined = persons.stream()
                       .map(Person::getName) // This will call person.getName()
                       .collect(Collectors.joining(", "));

传递给 Collectors.joining 的参数是可选的。

关于java - 如何使用新的 1.8 流 API 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37987051/

相关文章:

Java 不会响应我的输入

java - 返回两个可选值的总和,如果至少有一个不存在,则返回 null

java - 微服务: Without Service Discovery With Spring API Gateway

java - 像在 SQL 中使用 Java lambda 一样对对象进行分组和求和?

java - 带有返回生成键的 jOOQ 插入查询

java - 如何将 "double"值与 JOptionPane.showInputDialog 一起使用

javascript - 是否可以制作一个接受任何子字符串的正则表达式

java - 函数式 Java-8 lambda 与显式表达式报告编译器错误

java - Java 8 流上的多个 .sorted(...) 调用

java - 你能重新平衡一个未知大小的不平衡 Spliterator 吗?