什么是分组,在写业务代码时候,经常会遇到分组的需求,将数据根据某一个条件分组成一对多,或者拆分成一对一的关系。JDK是对Stream提供了分组的方法但是不是特别好用,代码写起来也不够精简,为了让业务代码更加精简,实现业务更简单。对数据分组抽象出一种分组能力。就是StreamBinder。
一、 为什么要精简它
因为记不住这个API,分组就是分组,但是方法是collect()。确实记不住,于是乎就对原始方法进行一个分组。但是遇到一个问题,是自己实现分组,还是使用上面那种分组呢? 通过Stream方法进行分组,在处理大批量数据时候效率会稍微高一点,但是处理几万时间并没有自己实现的效率高。
二、一对多分组
三、一对多分组并重新生成数据
可以看到下面代码是在上面代码的基础上,提供了一个valueApply映射。进行分组之后会在执行valueApply生成新的数据类型
四、一对一分组
一对一可以叫分组,也可以叫拆分。在项目中我们经常会处理一对一的映射关系。比如根据名字就找到指定的人。既然是一对一映射关系,如果出现了一对多关系就报一个异常 DuplicateFormatFlagsException。
可能用户想自定义异常,同样提供构造实现
五、快速使用
<dependency>
<groupId>com.hanframework</groupId>
<artifactId>common-toolkit</artifactId>
<version>1.0.0-RELEASE</version>
</dependency>