资讯详情

关于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

向大神致敬~~

标签: 15y连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台