stream collcetors averagingInt averagingDouble

最近突然对Stream比较感兴趣,因此想简单了解一下,发现要使用stream就必须要熟悉Collectors的各个方法。因此就抽出一点时间把Collectors的所有方法全部看一遍,下面是对各个方法的个人理解,因为没时间也没有兴趣去仔细分析每个方法的源码,因此只是根据官方文档和自己的示例去理解每个方法的功能和作用以及其用法。其中如果有理解不正确的地方还请大家指出一起讨论。

1averagingInt

Collectors.averagingDouble

# averagingDouble方法返回一个Collector收集器,它生成应用于输入元素的double值函数的算术平均值。如果没有元素,则结果为0

简单地说就是求元素平均值,如果没有元素就设定平均值为0;

Collectors.averagingInt​

Collectors.averagingLong​

这两个方法和上面方法类似,都是返回一个collector,这个collector用于生成输入元素计算的平均值。

下面就以最常用的Collectors.averagingInt函数为例来说明其用法:

语法如下-

static <T> Collector<T,?,Double> averagingInt(ToIntFunction<? super T> mapper)

示例:

void test17() {

        List<Integer> list = List.of(1,2,3,4,100);

        int avg = list.stream().collect(Collectors.averagingInt(a -> a)).intValue();

        System.out.println(avg);

    }

输出:22

以上三个方法返回的collector定义都是: static <T> Collector<T,​?,​Double> ,再看collect方法定义

<R, A> R collect(Collector<? super T, A, R> collector);

因此可以看出得出平均值数据类型都是double类型,因此最后如果要得直接到int类型就一定要类型转换一下。

针对其他数据类型的list的使用简单示例:

void test17() {

        //List<Integer> list = List.of(1,2,3,4,100);

        List<String> list = List.of("1","2","3","4","100");

        int avg = list.stream().collect(Collectors.averagingInt(Integer::parseInt)).intValue();

        System.out.println(avg);

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值