昨天在《java中有没有类似sql的group by的功能呢》一文中写了关于java8中通过对流进行操作实现对集合的分组。
今天再来写写java8流操作的另一种应用,map映射。
这个map映射就是将流中的对象转换成另一个对象。通过这样的过程就可以将一个集合通过流的map映射,最终转换成另一个集合。
具体咱们来演示一下。
还用昨天准备的类以及对象数据。
下面,我们先来将这个Student类型的List集合转换成保存所有年龄数据的Integer类型的集合。
来,上演示代码。
如上图所示,将list通过stream方法流化之后,在通过map方法可以将流中的对象映射成另外的对象。而map方法的参数就是映射的规则,如图中就是表示将流中的每个Student对象映射成这个对象的age属性。然后将映射后的Integer对象流收集成集合。
那如果是要将这个Student集合转换成存放性别数据的集合呢(这个性别的例子不是太合适,大家意会),想必大家已经可以根据上面的例子写出来了吧。
也贴出来一下吧。
上面的两个例子都是转换成原集合中一个属性组成的集合。
那如果是要转换成另外一个类型的集合呢,要怎么处理?
先来把所谓的另一个类型定义一下。
新增加了一个Person类,我们要做的是把Student类型的集合转换成Person类型的集合。
看看要怎么映射吧。
映射的关键方法map中的代码被“->”分成了两部分。前面的部分是表示流中的每一个对象,后面的部分表示要映射的结果。比如我们这里是要将流中的每个Student对象映射成Person对象(实际应用中映射的逻辑一般不会这么简单,一行就能搞定,需要结合业务逻辑编写映射的规则)。
这样最终通过collect收集起来的集合就是Person类型的集合了。
一起看下执行结果,结束今天的内容。