LongStream.range() 生成范围流的具体用法
longstream.range(long startinclusive, long endexclusive) 用于生成一个从 startinclusive(包含)到 endexclusive(不包含)的有序不装箱长整型流。调用该方法会立即返回一个 longstream,其元素按升序排列,且不会自动触发计算,直到执行终端操作。

import java.util.stream.LongStream;
public class RangeExample {
public static void main(String[] args) {
// 生成 [0, 5) 的流,即 0, 1, 2, 3, 4
LongStream range = LongStream.range(0, 5);
// 收集为列表以验证结果
var result = range.toList();
System.out.println(result); // 输出: [0, 1, 2, 3, 4]
}
}
上述代码展示了最基础的用法。输入参数为起始值 0 和结束值 5。预期结果是包含 0 到 4 的五个元素的列表。注意,如果起始值大于或等于结束值,生成的流将为空。
LongStream.rangeClosed() 与 range() 的区别及边界处理
如果需要包含结束值,应使用 LongStream.rangeClosed(long startInclusive, long endExclusive)。两者的核心区别在于右边界是否包含:前者是左闭右开 [start, end),后者是左闭右闭 [start, end]。在处理循环替代或索引遍历时,需根据业务逻辑选择其一。

import java.util.stream.LongStream;
public class RangeComparison {
public static void main(String[] args) {
// 使用 range: [0, 5)
LongStream exclusive = LongStream.range(0, 5);
var resExcl = exclusive.toList();
// 使用 rangeClosed: [0, 5]
LongStream inclusive = LongStream.rangeClosed(0, 5);
var resIncl = inclusive.toList();
System.out.println("Range (exclusive): " + resExcl);
System.out.println("RangeClosed (inclusive): " + resIncl);
}
}
运行该对比程序,resExcl 将输出 [0, 1, 2, 3, 4],而 resIncl 将输出 [0, 1, 2, 3, 4, 5]。这证实了 rangeClosed 多包含了一个结束值。在实际开发中,若需遍历数组索引,通常使用 range(0, array.length),因为数组长度即为上界且不包含在内。
当输入参数相等时 LongStream.range() 的行为
当 startInclusive 等于 endExclusive 时,LongStream.range() 会生成一个空的 LongStream。此时流中没有任何元素,任何中间操作都不会改变这一状态,终端操作将返回空集合或默认值。这是处理边界情况时需要特别注意的点,避免在后续逻辑中假设存在至少一个元素。
import java.util.stream.LongStream;
public class EmptyRangeTest {
public static void main(String[] args) {
// 起始值等于结束值
LongStream emptyStream = LongStream.range(5, 5);
// 检查是否为空
boolean isEmpty = emptyStream.allMatch(x -> false); // 短路返回 true
// 或者更直接地:
var list = emptyStream.toList();
System.out.println(list.isEmpty()); // 输出: true
System.out.println(list.size()); // 输出: 0
}
}
在上述代码中,LongStream.range(5, 5) 创建了一个空流。toList() 方法将其转换为一个大小为 0 的空列表。这验证了当上下界重合时,流为空的事实。开发者在使用此类范围流进行迭代或聚合前,应先判断流是否为空,或直接依赖空流的自然行为(如求和得 0,计数得 0)。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











