Java函数式编程Stream.collect

02/09/2023

steam():把一个源数据,可以是集合,数组,I/O channel, 产生器generator 等,转化成流;Stream 流提供了一个 collect() 方法,可以收集流中的数据到【集合】或者【数组】中去。。
Collectors(): 类实现了很多归约操作,例如将流转换成集合和聚合元素。通过stream().collect()方法可简单获得我们所需要的数据结构。

//1.收集数据到list集合中
stream.collect(Collectors.toList())
//2.收集数据到set集合中
stream.collect(Collectors.toSet())
//3.收集数据到指定的集合中
stream.collect(Collectors.toCollection(Supplier collectionFactory))

测试集合类

1、将集合里的某个参数拿出来重新生成一个集合,如下将prodList 里的name参数重新生成一个集合

2、对集合里的数据进行处理,如下将集合里的青岛啤酒名称改为哈尔滨啤酒

3、将集合需要的参数数据转化成Map,如下将id与name转化成Map

4、将集合通过某个参数进行分组,对组织人员进行部门分组的时候有奇效,如下将对category分组

5、将集合通过某个参数进行拼接,如下将name进行拼接

6、统计集合的总数

7、将集合通过某个参数进行拼接(忽略空值)StringUtils.isNotEmpty(s)).collect(Collectors.joining("|")

8、过滤对象中的空数据字段.filter(s -> s.getName() != null && StringUtils.isNotBlank(s.getName()))

List collect = sysResourceBeans.stream().filter(s -> s.getName() != null && StringUtils.isNotBlank(s.getName())).map(BeanMap::create).collect(Collectors.toList());