如何对Java数组的指定索引区间求和?基于Stream的实现疑问
解决Java Stream计算数组指定索引区间元素和的问题
嘿,要计算数组索引[0]到[3]区间内的元素和,用Java Stream有两种很实用的方式,我给你拆解一下:
方法一:用limit()快速取前N个元素(适合从起始索引开始的场景)
如果你的区间是从索引0开始,直接用limit()截断Stream到指定长度就行——因为索引0到3刚好是前4个元素:
import java.util.stream.*; int[] array = {1,2,3,4,5}; // 取前4个元素(对应索引0-3)求和 int sum = IntStream.of(array).limit(4).sum(); // 结果为10
方法二:用IntStream.range()精准指定索引范围(通用场景)
如果以后需要计算任意索引区间的和,比如索引[2]到[4],这种方法更灵活。需要注意的是range()的结束参数是排他的,所以要取到索引3的话,结束值得写4:
import java.util.stream.*; int[] array = {1,2,3,4,5}; int start = 0; int end = 4; // 包含索引3,所以结束值设为4 int sum = IntStream.range(start, end) .map(index -> array[index]) // 把索引映射为数组元素 .sum(); // 结果同样是10
小提醒
- 一定要确保你的索引区间在数组的有效范围内,不然会抛出
ArrayIndexOutOfBoundsException哦; - 如果是闭区间[start, end],记得把
range()的第二个参数设为end + 1,因为它是左闭右开的。
内容的提问来源于stack exchange,提问作者Broather
相关产品推荐
相关产品推荐

