java8Stream流常用操作

开发的时候第一次遇到流操作,看懵了。因此写了几个小demo测试了一下,看看Stream流都有些什么操作。

自己对流的概念不是很清楚,项目中也只是用到Stream流对集合的操作,因此也就只是测试了一下集合的操作。
java8Stream流常用操作
这是项目中第一下看到的流操作,其实仔细看还是能够理解的,userInfoReqVo里面有一个集合,得到集合后调用stream()方法得到对应的流然后就可以利用流对集合进行相关的操作了。
先不看中间,最后是调用collect()方法返回了一个新的List集合。参数是Collectors.toList(),这里如果想要得到Set集合的话,参数可以改成Collectors.toSet()。
java8Stream流常用操作
总结:集合的流操作要先调用集合的stream()方法得到流对象,得到流对象后进行响应的操作,最后调用流对象的collect()方法转换成集合,其中若想转换成list参数设置为Collectors.toList(),想转换成set参数设置成Collctors.toSet()。

  1. Stream.distinct()
    首先来看看流的distinct()方法,这个方法比较好理解,一眼看过去就知道是去重的方法,不说废话,直接测试。
    java8Stream流常用操作
    看结果也就一清二楚了,也在预料之中,没什么好多说的。

  2. Stream.map()
    这个方法是用于遍历集合的方法,在遍历的过程中可以对集合中的每个元素进行操作。话不多说,看下面的例子:
    java8Stream流常用操作
    这里集合中的存储的是String类型的元素,表示遍历集合中的每一个String类型元素,调用String的toUpperCase方法对每个元素进行一个大写的转化效果。
    若是不好理解也可以使用lambda表达式,效果也是一样的:
    java8Stream流常用操作
    总之,map的用法就是对集合进行一个遍历。拿到集合中的元素后可以进行自己想要的操作。可能有人觉得这么写还不如for循环或者迭代器遍历,其实效果都是一样的,只是这种写法更清洁而已,毕竟for循环或者迭代器遍历的话这一行代码就变成三四行。用的熟练的话这种写法还是比较方便的(还能用来装个x)。。

  3. Stream.peek()
    这个方法的话我自己使用了一下,感觉跟map()的用处差不多,也是用来遍历的,但是又跟map有点区别,看图:
    java8Stream流常用操作
    自己也在网上找了大神的解释,不是太能看懂,反正从结果上看的话就是map会改变流本身的数据,而peek不会改变流中的数据,遍历进行操作后得到的流还是原来的流。总之,peek方法是用来遍历拿到集合中的每个元素的,只能用来进行一些外部操作。

由于peek返回的流不会变,因此map比peek多了一些用处:
java8Stream流常用操作
比如集合中存储的是对象,想要拿到集合里面所有对象的某个属性的集合,就可以用map来操作,而peek的话就不行。
4. Stream.filter()
这个方法也比较好理解,见名知意,就是用来过滤操作的。
java8Stream流常用操作
filter里面写上过滤条件,我这里是表示只要id小于3的person对象。

Stream中还有其他的一些方法,具体的用处还要自己去一一体会,大家如果想要熟练使用Stream对集合的操作也要自己动手敲代码去理解其中的意思,有些东西是需要自己去动手然后得到结果才能理解其中的意思的。
写的不好,勿喷。