首页 > 编程语言 >关于java stream流中的peek方法和foreach的自我理解:

关于java stream流中的peek方法和foreach的自我理解:

时间:2023-03-18 11:45:23浏览次数:47  
标签:spuBaseAttrVo peek 遍历 java stream 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进行遍历。

标签:spuBaseAttrVo,peek,遍历,java,stream,foreach,方法
From: https://www.cnblogs.com/just1t/p/17229639.html

相关文章

  • java中判断字符串是否为数字的三种方法
    1用JAVA自带的函数publicstaticbooleanisNumeric(Stringstr){for(inti=str.length();--i>=0;){if(!Character.isDigit(str.charAt(i))){returnfalse;......
  • 【JAVA基础】正则表达式
    正则表达式就是我们程序员为了在海量数据中搜索到符合我们规定的格式的数据所采用的一种规范,官方一点就是说正则表达式是一种文本模式,包括普通字符(例如,a到z之间的字母)和......
  • 第十三届蓝桥杯省赛 Java B 组 C题——字符统计(AC)
    目录​​1.字符统计​​​​1.题目描述​​​​2.输入格式​​​​3.输出格式​​​​4.数据范围​​​​5.原题链接​​​​2.解题思路​​​​3.Ac_code​​1.字符统计1.......
  • 读Java性能权威指南(第2版)笔记20_垃圾回收G
    1. Survivor空间1.1. 新生代被划分为两个Survivor空间和一个Eden空间的原因1.1.1. 刚刚被创建并且还在使用中,所以不能被回收,但它们的寿命并没有长到足以进入老年代......
  • java基础_基本数据类型
    介绍鄙人才疏学浅,如有谬论,敬请指教。计算机储存容量单位讲解计算机储存容量基本单位就是字节(Byte),而字节下面还有一个比特>(bit),对应关系是一个字节=八个比特,比特(bit......
  • java类加载器有哪些
    java类加载器有:1、引导类加载器;2、拓展类加载器;3、系统类加载器;4、用户自定义类加载器。其中,引导类加载器(BoostrapClassLoader),又叫启动类加载器,由原生代码(如C语言)编写,不......
  • java类加载器有哪些
    java类加载器有:1、引导类加载器;2、拓展类加载器;3、系统类加载器;4、用户自定义类加载器。其中,引导类加载器(BoostrapClassLoader),又叫启动类加载器,由原生代码(如C语言)编写,不......
  • Java Thread类
    在多线程编程过程中,总会或多或少地接触到多线程这个概念。而Java的并发编程领域,想要使用线程技术,就不得不得接触到java.lang.Thread这个类。很多程序员都使用过java.l......
  • java运算符
    一表达式表达式由运算符和操作数组成如:5num1,num1+num2,sum=num1+num2二运算符1.算术运算符算术运算符主要用于进行基本的算术运算,如加法,减法,乘......
  • Java图形界面设计-切换按钮复选按钮及单选按钮
    Java程序设计语言(一)示例程序P164程序8.5与书上程序不完全一样,匿名类使用lambda使用jdk1.8.0_311packagetech.bugstar.practice.gui;importjavax.swing.*;im......