为什么一种原始类型需要强制转换而另一种不需要?/* This method uses stream operations to count how many numbers in a given array* of integers are negative*/ public static void countNegatives(int[] nums) { long howMany = stream(nums) // or: int howMany = (int) stream(nums) .filter(n -> n < 0) .count(); System.out.print(howMany);}
2 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
count()返回long而不是每个都long可以放入 ,int因此需要显式转换才能将结果存储到int. 这与 java-10 无关。它在以前的 JDK 中一直存在。
如果您不想投射,那么替代方法是:
...
.filter(n -> n < 0)
.map(e -> 1)
.sum();
但正如人们所看到的,这不像您的示例那样可读,因为代码本质上是说“给我一个通过过滤操作的元素的总和”,而不是“给我一个通过过滤操作的元素的计数”。
因此,最终如果您需要将结果作为int 类型,那么请进行演员表。
添加回答
举报
0/150
提交
取消