在工作中找到拼接字符串的好方法:
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
向大神致敬~~