工作时发现一个很棒的拼接字符串的方法:

final String[] strs= {"x", "y", "z"};
Stream<String> stream = Stream.of(strs);// 拼接成 [x, y, z] 形式
String result1 = stream.collect(Collectors.joining(", ", "[", "]"));
// 拼接成 x | y | z 形式
String result2 = stream.collect(Collectors.joining(" | ", "", ""));
// 拼接成 x -> y -> z] 形式
String result3 = stream.collect(Collectors.joining(" -> ", "", ""));

可以代替使用冗长的for循环或者forEach循环,更加有feel~

举个栗子:

 deptDepthStr = deptNameList.stream().collect(Collectors.joining("/"));

将List中的deptName使用“/”连接符连接起来,下面则是用最原始的for循环写的 ,一句顶三行,有文化还是很棒啊~~

for (int i = 0; i < deptNameList.size() - 1; i++) {description += deptNameList.get(i).getDeptName() + "/";}description =description + deptNameList.get(deptNameList.size() - 1).getDeptName();

又是元气满满的一天           啾咪~

========================================分割线===================================================

以下为查询资料后的扩展:

List<String> widgetIds = widgets.stream().map(Widget::getWidgetId).collect(Collectors.toList());

解释下一这行代码:

  • widgets:一个实体类的集合,类型为List<Widget>
  • Widget:实体类
  • getWidgetId:实体类中的get方法,为获取Widget的id

本来想要获得wiget的id集合,按照我的思路肯定是遍历widges,依次取得widgetIds,但是此行代码更加简洁,高效

stream()优点

  • 无存储。stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。
  • 为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。
  • 惰式执行。stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。
  • 可消费性。stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。

具体可参考原文博客:https://blog.csdn.net/lidai352710967/article/details/81461119

向大神致敬~~

关于Stream()和Collectors.joining()字符串连接器相关推荐

  1. 【Java代码】实现字符串转数据库的 inStr【使用 JDK8 stream.collect(Collectors.joining(delimiter, prefix, suffix)) 实现】

    why 有不少这样的情况,前端会传筛选条件,给到后端的时候是个 conditionStr ,如果您用的是 mybatis-plus 的 API 那么直接 split 一下就可以使用,如果不是,那就需要 ...

  2. Java 字符串拼接4种实现方法(for循环、stream().reduce()、Collectors.joining()、String.join())

    1 for循环实现 List<String> list = new ArrayList<>(Arrays.asList("1", "2" ...

  3. Stream编程之Collectors.joining方法解析

    首先看一个例子 List<String> list = Lists.newArrayList("a", "b", "c", &q ...

  4. Java8新特性Stream之Collectors(toList()、toSet()、toCollection()、joining()、partitioningBy()、collectingAndT)

    将流中的数据转成集合类型: 一.将数据收集进一个列表(Stream 转换为 List,允许重复值,有顺序) //1.将数据收集进一个列表(Stream 转换为 List,允许重复值,有顺序) //创建 ...

  5. Stream Collectors - joining

    public static Collector<CharSequence,​?,​String> joining() 简单地说就是把元素连接起来,看一个例子: void test25() ...

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

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

  7. java8 stream collectors.joining

    java8 stream collectors.joining 为承接另一篇关于Stream介绍的文章,本文将详细讲讲Java 8流(stream)收集器(Collectors)中的joining() ...

  8. JDK8 | 字符串收集器 Collectors.joining()

    JDK8的流收集器Collectors.joining 支持灵活的参数配置,可以指定字符串连接时的分隔符,前缀和后缀,可选用.用于拼接字符串,更方便好用. 例: final String[] strs ...

  9. java8 Lambda Stream collect Collectors 常用实例

    将一个对象的集合转化成另一个对象的集合 List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails(); ...

最新文章

  1. 使用CSS 3创建不规则图形
  2. Facebook的首席技术官:人工智能已用于内容审核,未来会做更多
  3. ARP***绑定 linux/windows 下解决方案
  4. java代码,继承。。。主要是传值,赋值。
  5. 量子计算机是程序员的未来,研究者:量子计算机一旦成功问世,时间也许会失去存在的意义...
  6. Linux文件查找之find秘笈
  7. Keras-8 Predicting house prices: a regression example
  8. 相对定位与绝对定位联合使用
  9. 小技巧:Mac下快速锁屏
  10. 中国互联网关于阿里未来预测:这盘大期如何走
  11. hashmap常见问题集锦
  12. Excel表格的时间设置
  13. SQL 查询的分布式执行与调度
  14. JQ彩色3D纸片折叠动画
  15. Spring aop 循环依赖 Is there an unresolvable circular reference?
  16. ruby入门算法: 输出一个 宽度为m , 高度为n 的图形。
  17. 灰度值阈值设置matlab,基本全局阈值法(basic global thresholding)MATLAB实现
  18. HTML中表格怎么制作
  19. Android开发必须掌握的Java基础知识和常见面试题
  20. 欧洲6G时间表、目标和关键技术(下篇)

热门文章

  1. 双网卡的网络路由配置
  2. linux端口查看time_wait,netstat -an查看到大量的TIME_WAIT状态的解决办法
  3. SPSS(二)SPSS实现多因素方差分析模型(图文教程+数据集)
  4. ubuntu下按键精灵xdotool
  5. 阿里云code登录,阿里云code使用教程
  6. Linux系统中的mount挂载命令及参数详解
  7. HTML与CSS——CSS字体样式
  8. Node入门 (转载)--个人觉得写的不错,赞!
  9. QT-QML制作登录界面
  10. 【Bug】ValueError: Solver lbfgs supports only ‘l2‘ or ‘none‘ penalties, got l1 penalty