我想对整数列表求和.它的工作方式如下,但是语法感觉不正确.代码可以优化吗?

Map<String, Integer> integers;
integers.values().stream().mapToInt(i -> i).sum();

推荐答案

这将起作用,但i -> i正在做一些自动拆箱,这就是为什么它"感觉"奇怪.mapToInt将流转换为IntStream"的原始int值元素".以下任何一项都能起作用,并能更好地解释编译器使用原始语法在后台执行的操作:

integers.values().stream().mapToInt(i -> i.intValue()).sum();
integers.values().stream().mapToInt(Integer::intValue).sum();

Java相关问答推荐

找到允许的最大底片

Java中后期绑定的替代概念

Character::Emoji不支持带数字的字符吗?

JVM会优化这个数学运算吗?

如何创建同一类的另一个对象,该对象位于变量中?

对Java中的通配符参数的混淆

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

测试容器无法加载类路径初始化脚本

Sack()步骤中的合并运算符未按预期工作

%This内置函数示例

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

使用Jackson库反序列化json

Java中不兼容的泛型类型

Regex以查找不包含捕获组的行

我可以在@Cacheable中使用枚举吗

FETCH类型设置为LAZY,但它仍会发送第二个请求

在java中使用不同的application.properties-jar而不使用Spring

通过/失败的参数化junit测试方法执行数

如何在java中从以百分比表示的经过时间和结束日期中找到开始日期