【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解

举报
辰兮 发表于 2022/03/22 22:58:45 2022/03/22
【摘要】 【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、...

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…


一、文章序言

本篇用案例的形式学习一下Java 8 新特性|Collectors.joining()

业务场景:在项目中我们常常要对list集合的数据做一些字符串拼接/处理等相关操作
请添加图片描述

常见的案例如下

/**
 * @program: RecursionAlgorithm
 * @description: Java 8 新特性|Collectors.joining()
 * @author: 辰兮要努力
 * @create: 2021-10-02 11:01
 */
public class StreamDemo {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("辰兮","2021","要努力");
        String result=  list.stream().collect(Collectors.joining());
        System.out.println(result);
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

输出结果

辰兮2021要努力

  
 
  • 1

Collectors.joining() 方法以遭遇元素的顺序拼接元素。我们可以传递可选的拼接字符串、前缀和后缀

在这里插入图片描述
分隔符:delimiter
前缀:prefix
后缀:suffix


二、案例实践

来一起学习一下相关的Collectors.joining() 方法

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

/**
 * @program: RecursionAlgorithm
 * @description: Java 8 新特性|Collectors.joining()
 * @author: 辰兮要努力
 * @create: 2021-10-02 11:01
 */
public class StreamDemo {
    public static void main(String[] args) {
        final String[] strings = {"x", "y", "z"};
        Stream<String> stream1 = Stream.of(strings);
        Stream<String> stream2 = Stream.of(strings);
        Stream<String> stream3 = Stream.of(strings);
        Stream<String> stream4 = Stream.of(strings);
        Stream<String> stream5 = Stream.of(strings);
        // 拼接成 [x, y, z] 
        String result1 = stream1.collect(Collectors.joining(", ", "[", "]"));
        // 拼接成 x | y | z 
        String result2 = stream2.collect(Collectors.joining(" | ", "", ""));
        // 拼接成 x -> y -> z] 
        String result3 = stream3.collect(Collectors.joining(" -> ", "", ""));
        //[x, y, z]
        System.out.println(result1);
        //x | y | z
        System.out.println(result2);
        //x -> y -> z
        System.out.println(result3);

        //[x.y.z]
        String result4 =  stream4.collect(Collectors.joining(".","[","]"));

        //xyz
//        String result4 =  stream4.collect(Collectors.joining(""));

        System.out.println(result4);
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

输出结果

[x, y, z]
x | y | z
x -> y -> z
[x.y.z]

  
 
  • 1
  • 2
  • 3
  • 4

如上案例均可以在自己电脑实践
请添加图片描述

Java 8 流 ( stream ) 收集器 ( Collectors ) 中的 joining() 方法。该方法会返回一个 Collectors 实例,方便在流收集器上的链式操作

源码如下

 /**
     * Returns a {@code Collector} that concatenates the input elements,
     * separated by the specified delimiter, with the specified prefix and
     * suffix, in encounter order.
     *
     * @param delimiter the delimiter to be used between each element
     * @param  prefix the sequence of characters to be used at the beginning
     *                of the joined result
     * @param  suffix the sequence of characters to be used at the end
     *                of the joined result
     * @return A {@code Collector} which concatenates CharSequence elements,
     * separated by the specified delimiter, in encounter order
     */
    public static Collector<CharSequence, ?, String> joining(CharSequence delimiter,
                                                             CharSequence prefix,
                                                             CharSequence suffix) {
        return new CollectorImpl<>(
                () -> new StringJoiner(delimiter, prefix, suffix),
                StringJoiner::add, StringJoiner::merge,
                StringJoiner::toString, CH_NOID);
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

希望如上的案例能帮助大家了解Collectors.joining() 的相关操作,更好的处理项目中不同的业务场景

小伙伴们国庆假期愉快!爱生活、爱自己、爱你所在的每一天!


非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2021年10月2日11:52:31 愿你们奔赴在自己的热爱里!

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/120584655

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。