📜  Java 8 流 |带有示例的 Collectors.joining() 方法(1)

📅  最后修改于: 2023-12-03 15:15:54.926000             🧑  作者: Mango

Java 8 流 | 带有示例的 Collectors.joining() 方法

在 Java 8 中,我们可以使用流(Stream)来处理大型数据集。Stream 是一种从数据源(例如集合、数组等)生成连续元素的概念,它支持串行和并行操作。在流中,我们可以使用 Collectors.joining() 方法将元素连接成一个字符串。本文将介绍这个方法的用法并提供示例。

Collectors.joining() 方法的用法

这个方法会把元素连接成字符串,元素之间使用给定的分隔符进行分隔。这个方法有以下四种重载形式:

// 连接字符串,无分隔符和前后缀
joining()

// 使用给定的分隔符连接字符串,无前后缀
joining(CharSequence delimiter)

// 使用给定的分隔符连接字符串,其中prefix是连接字符串前面的字符串,suffix是连接字符串后面的字符串
joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)

// 使用给定的分隔符连接字符串,并去掉null元素,无前后缀
joining(CharSequence delimiter)

默认情况下,Collectors.joining() 方法不带分隔符、前缀和后缀。如果需要,我们可以通过传递参数进行设置。

我们可以在任何集合上调用这个方法。这个方法返回一个收集器(Collector),可以将流中的元素进行连接。

示例

接下来是一些示例,这些示例演示了如何使用 Collectors.joining() 方法。

示例 1:连接字符串

List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining());
System.out.println(result); // 输出 "applebananacherry"

示例 2:使用分隔符连接字符串

List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining(", "));
System.out.println(result); // 输出 "apple, banana, cherry"

示例 3:使用分隔符、前缀和后缀连接字符串

List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining(", ", "[", "]"));
System.out.println(result); // 输出 "[apple, banana, cherry]"

示例 4:去掉null元素并使用分隔符连接字符串

List<String> list = Arrays.asList("apple", null, "banana", null, "cherry");
String result = list.stream().filter(x -> x != null).collect(Collectors.joining(", "));
System.out.println(result); // 输出 "apple, banana, cherry"

示例 5:连接集合元素的属性

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
}

List<Person> persons = Arrays.asList(
        new Person("John", 30),
        new Person("Mary", 25),
        new Person("Jack", 40));

String result = persons.stream().map(Person::getName).collect(Collectors.joining(", "));
System.out.println(result); // 输出 "John, Mary, Jack"

在这个示例中,我们将 Person 对象的 name 属性连接成字符串。

总结

Collectors.joining() 方法是在处理流时将元素连接成字符串的有用方法。它支持分隔符、前缀和后缀,也可以用于集合中元素的属性。熟练掌握这个方法是必要的,以便在处理大型数据集时更有效地运用 Java 8 流。