关于java stream流中的peek方法和foreach的自我理解:
Posted just1t的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java stream流中的peek方法和foreach的自我理解:相关的知识,希望对你有一定的参考价值。
场景:
我需要在数据库中将信息查出,在将其转化为某一个对象,再将该对象进行添加进入list集合
我首先想到的是stream().peek()方法,编写的代码如下:
productAttrValueService.getListBySpuIdAndAttrId(spuInfo,attrAttrgroupRelationEntity.getAttrId()).stream().peek(productAttrValueEntity ->
SkuItemVo.SpuBaseAttrVo spuBaseAttrVo = new SkuItemVo.SpuBaseAttrVo();
spuBaseAttrVo.setAttrName(productAttrValueEntity.getAttrName());
spuBaseAttrVo.setAttrValue(productAttrValueEntity.getAttrValue());
spuAttrList.add(spuBaseAttrVo);
System.out.println("属性为:"+spuBaseAttrVo);
);
执行的结果为:
可以看到,并没有出现在peek中的打印信息(没有属性为:。。。。。。)
但是如果使用foreach进行遍历每一项,就会存在打印结果:
在查看了相应的资料和博客之后,我对于peek方法和foreach方法的理解是:
peek方法的作用主要是用于改变传入对象的内部信息,如果没有修改就不会执行peek中的代码;
foreach方法是不管你遍历的的目的是什么,都会执行foreach里边的代码。
我的推荐是:如果我们在遍历的时候需要存在返回值的情况,就使用stream().map()方法,如果没有返回值,仅仅是需要修改对象内部的信息,就使用stream().peek()方法,其他的都使用foreach进行遍历。
以上是关于关于java stream流中的peek方法和foreach的自我理解:的主要内容,如果未能解决你的问题,请参考以下文章
JAVA07_Stream流中FindFirst方法查找元素第一个
JAVA07_Stream流中FindFirst方法查找元素第一个