加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8 mapToInt(mapToInt(e – > e))如何提高性能?

发布时间:2020-12-14 17:44:30 所属栏目:Java 来源:网络整理
导读:我正在阅读“ Java 8 Lambdas”这本书,在某些时候,作者说:“尽可能使用原始的专业功能是一个好主意,因为 性能优势“. 他在这里指的是mapToInt,mapToLong等 事实上,我不知道演员表现来自于诚实. 我们来看一个例子: // Consider this a very very long list,
我正在阅读“ Java 8 Lambdas”这本书,在某些时候,作者说:“尽可能使用原始的专业功能是一个好主意,因为
性能优势“.

他在这里指的是mapToInt,mapToLong等

事实上,我不知道演员表现来自于诚实.

我们来看一个例子:

// Consider this a very very long list,with a lot of elements
    List<Integer> list = Arrays.asList(1,2,3,4);

    //sum it,flavour 1
    int sum1 = list.stream().reduce(0,(acc,e) -> acc + e).intValue();

    //sum it,flavour 2
    int sum2 = list.stream().mapToInt(e -> e).sum();

    System.out.println(sum1 + " " + sum2);

因此,在第一种情况下,我使用reduce来计算值,所以BinaryOperator函数将一直收到int(acc)和Integer(集合的当前元素),然后将对Integer进行解包int(acc)

在第二种情况下,我使用mapToInt,它将每个Integer解包成一个int,然后对它进行求和.

我的问题是,第二种方法有什么好处吗?
还有什么地图到int,当我可以使用地图?

那么是的,这只是糖语法,还是具有一定的性能优势?如果是,请提供一些信息

问候,

解决方法

有更多的拳击进行水平
int sum1 = list.stream().reduce(0,e) -> acc + e).intValue();

因为还原函数是二进制运算符<整数> – 它通过两个整数值,取消收件箱,添加它们,然后重新包装结果. mapToInt版本从列表中取消打包Integer元素一次,然后使用原始int值作为IntStream.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读