关于Stream()和Collectors.joining()字符串连接器
工作时发现一个很棒的拼接字符串的方法:
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()字符串连接器相关推荐
- 【Java代码】实现字符串转数据库的 inStr【使用 JDK8 stream.collect(Collectors.joining(delimiter, prefix, suffix)) 实现】
why 有不少这样的情况,前端会传筛选条件,给到后端的时候是个 conditionStr ,如果您用的是 mybatis-plus 的 API 那么直接 split 一下就可以使用,如果不是,那就需要 ...
- Java 字符串拼接4种实现方法(for循环、stream().reduce()、Collectors.joining()、String.join())
1 for循环实现 List<String> list = new ArrayList<>(Arrays.asList("1", "2" ...
- Stream编程之Collectors.joining方法解析
首先看一个例子 List<String> list = Lists.newArrayList("a", "b", "c", &q ...
- Java8新特性Stream之Collectors(toList()、toSet()、toCollection()、joining()、partitioningBy()、collectingAndT)
将流中的数据转成集合类型: 一.将数据收集进一个列表(Stream 转换为 List,允许重复值,有顺序) //1.将数据收集进一个列表(Stream 转换为 List,允许重复值,有顺序) //创建 ...
- Stream Collectors - joining
public static Collector<CharSequence,?,String> joining() 简单地说就是把元素连接起来,看一个例子: void test25() ...
- 【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
- java8 stream collectors.joining
java8 stream collectors.joining 为承接另一篇关于Stream介绍的文章,本文将详细讲讲Java 8流(stream)收集器(Collectors)中的joining() ...
- JDK8 | 字符串收集器 Collectors.joining()
JDK8的流收集器Collectors.joining 支持灵活的参数配置,可以指定字符串连接时的分隔符,前缀和后缀,可选用.用于拼接字符串,更方便好用. 例: final String[] strs ...
- java8 Lambda Stream collect Collectors 常用实例
将一个对象的集合转化成另一个对象的集合 List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails(); ...
最新文章
- 使用CSS 3创建不规则图形
- Facebook的首席技术官:人工智能已用于内容审核,未来会做更多
- ARP***绑定 linux/windows 下解决方案
- java代码,继承。。。主要是传值,赋值。
- 量子计算机是程序员的未来,研究者:量子计算机一旦成功问世,时间也许会失去存在的意义...
- Linux文件查找之find秘笈
- Keras-8 Predicting house prices: a regression example
- 相对定位与绝对定位联合使用
- 小技巧:Mac下快速锁屏
- 中国互联网关于阿里未来预测:这盘大期如何走
- hashmap常见问题集锦
- Excel表格的时间设置
- SQL 查询的分布式执行与调度
- JQ彩色3D纸片折叠动画
- Spring aop 循环依赖 Is there an unresolvable circular reference?
- ruby入门算法: 输出一个 宽度为m , 高度为n 的图形。
- 灰度值阈值设置matlab,基本全局阈值法(basic global thresholding)MATLAB实现
- HTML中表格怎么制作
- Android开发必须掌握的Java基础知识和常见面试题
- 欧洲6G时间表、目标和关键技术(下篇)
热门文章
- 双网卡的网络路由配置
- linux端口查看time_wait,netstat -an查看到大量的TIME_WAIT状态的解决办法
- SPSS(二)SPSS实现多因素方差分析模型(图文教程+数据集)
- ubuntu下按键精灵xdotool
- 阿里云code登录,阿里云code使用教程
- Linux系统中的mount挂载命令及参数详解
- HTML与CSS——CSS字体样式
- Node入门 (转载)--个人觉得写的不错,赞!
- QT-QML制作登录界面
- 【Bug】ValueError: Solver lbfgs supports only ‘l2‘ or ‘none‘ penalties, got l1 penalty