昨天在《java中有没有类似sql的group by的功能呢》一文中写了关于java8中通过对流进行操作实现对集合的分组。

今天再来写写java8流操作的另一种应用,map映射。

Java映射是个什么东西 java map映射_java

这个map映射就是将流中的对象转换成另一个对象。通过这样的过程就可以将一个集合通过流的map映射,最终转换成另一个集合。

具体咱们来演示一下。

还用昨天准备的类以及对象数据。

Java映射是个什么东西 java map映射_Java映射是个什么东西_02

下面,我们先来将这个Student类型的List集合转换成保存所有年龄数据的Integer类型的集合。

来,上演示代码。

Java映射是个什么东西 java map映射_数据_03

如上图所示,将list通过stream方法流化之后,在通过map方法可以将流中的对象映射成另外的对象。而map方法的参数就是映射的规则,如图中就是表示将流中的每个Student对象映射成这个对象的age属性。然后将映射后的Integer对象流收集成集合。

那如果是要将这个Student集合转换成存放性别数据的集合呢(这个性别的例子不是太合适,大家意会),想必大家已经可以根据上面的例子写出来了吧。

也贴出来一下吧。

Java映射是个什么东西 java map映射_java map映射_04

上面的两个例子都是转换成原集合中一个属性组成的集合。

那如果是要转换成另外一个类型的集合呢,要怎么处理?

先来把所谓的另一个类型定义一下。

Java映射是个什么东西 java map映射_Java映射是个什么东西_05

新增加了一个Person类,我们要做的是把Student类型的集合转换成Person类型的集合。

看看要怎么映射吧。

Java映射是个什么东西 java map映射_java_06

映射的关键方法map中的代码被“->”分成了两部分。前面的部分是表示流中的每一个对象,后面的部分表示要映射的结果。比如我们这里是要将流中的每个Student对象映射成Person对象(实际应用中映射的逻辑一般不会这么简单,一行就能搞定,需要结合业务逻辑编写映射的规则)。

这样最终通过collect收集起来的集合就是Person类型的集合了。

一起看下执行结果,结束今天的内容。

Java映射是个什么东西 java map映射_业务逻辑_07