📅  最后修改于: 2023-12-03 15:15:54.926000             🧑  作者: Mango
在 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()
方法。
List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining());
System.out.println(result); // 输出 "applebananacherry"
List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining(", "));
System.out.println(result); // 输出 "apple, banana, cherry"
List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining(", ", "[", "]"));
System.out.println(result); // 输出 "[apple, banana, cherry]"
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"
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 流。