开发小知识

本文对比了Java中==和equals()的区别,着重讲解了StreamAPI的reduce方法,展示了如何在不同场景下使用reduce进行流式计算,包括无初始值、带初始值和并行计算的情况。
摘要由CSDN通过智能技术生成

一、==与equal()的区别

  • == 比较是否相等,equal比较是否是同一个对象
1. ==

1.1 作用于基本数据类型 ,比较其存储的值
1.2 作用于引用数据类型,比较其所指向对象的地址值

2. equal()

2.1 equals是Object的方法,用来比较两个对象的地址值是否相等;不能作用于基本数据类型
2.2 String类型重写了equal():比较的是对象值;没有对 equals 方法进行重写,则相当于“==“,比较的是对象的地址值

'=='是判断两个变量或实例是不是指向同一个内存空间。'equals’是判断两个变量或实例所指向的内存空间的值是不是相同
参考博客1
参考博客2

二、stream.reduce()

reduce的作用是把stream中的元素给组合起来,我们可以传入一个初始值,它会按照我们的计算方式依次拿流中的元素和初始化值进行计算,计算结果再和后面的元素计算
Ⅰ,一个参数使用

     Stream<Integer> integerStream =Stream.iterate(1,(a)->a+2).limit(5);// 1 3 5 7 9
        System.out.println(integerStream);
        System.out.println(integerStream.reduce((a,b)->{
            System.out.println("a:"+a); // 1 4 9 16 
            System.out.println("b:"+b);
            return a+b;
        }));
     第一次计算使用前两个参数,后面以上一次计算的返回值作为第一个参数,流中取下一个值作为第二个参数

Ⅱ,两个参数使用(带初始值)

// 两个参数使用,带初始值
List<Integer> list1 = Arrays.asList(1,2,3,4,5,6,7);
Integer sum = list1.stream().reduce(10,(a,b)->a+b);
System.out.println(sum);  //38

Ⅲ,三个参数使用(带初始值,并行计算,改变返回值类型)

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值