Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

11.16. Collectors

		
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamJoinWithNewline {
    public static void main(String[] args) {
        // 1. 示例1:从List创建Stream<String>
        List<String> stringList = Arrays.asList("第一行", "第二行", "第三行", "第四行");
        String joinedByNewline1 = stringList.stream()
                .collect(Collectors.joining("\n")); // 关键:用"\n"作为分隔符
        System.out.println("从List生成的拼接结果:");
        System.out.println(joinedByNewline1);
        // 输出结果(带换行):
        // 第一行
        // 第二行
        // 第三行
        // 第四行

        // 2. 示例2:直接创建Stream<String>(如动态生成的字符串流)
        Stream<String> stringStream = Stream.of("Apple", "Banana", "Cherry", "Date");
        String joinedByNewline2 = stringStream
                .collect(Collectors.joining("\n"));
        System.out.println("\n直接Stream生成的拼接结果:");
        System.out.println(joinedByNewline2);
        // 输出结果(带换行):
        // Apple
        // Banana
        // Cherry
        // Date
    }
}		
		
		

11.16.1. 

			
Stream<String> lines = Stream.of("Hello", "World", "Java Stream");
// 前缀加"【", 后缀加"】",元素间用"\n"分隔
String resultWithPrefixSuffix = lines.collect(Collectors.joining(
        "\n",    // 元素分隔符(换行)
        "【",    // 整体前缀
        "】"     // 整体后缀
));
System.out.println(resultWithPrefixSuffix);
// 输出结果:
// 【Hello
// World
// Java Stream】			
			
			

11.16.2. 过滤空值

			
String joinedWithNoNull = stringList.stream()
        .filter(Objects::nonNull) // 过滤null元素
        .collect(Collectors.joining("\n"));