java stream api 通过 intstream.rangeclosed(int startinclusive, int endexclusive) 静态方法生成闭合范围流,该方法包含起始值但不包含结束值(注:此处需纠正,rangeclosed 是包含两端的,range 是不包含结束值的。题目问的是 rangeclosed,所以是包含两端)。正确描述:intstream.rangeclosed(int startinclusive, int endinclusive) 生成一个包含起始值和结束值的整数序列流。

如何区分 range 和 rangeClosed 的边界行为
IntStream.range() 生成的流不包含结束值,而 IntStream.rangeClosed() 生成的流包含结束值。例如,range(1, 5) 生成 [1, 2, 3, 4],而 rangeClosed(1, 5) 生成 [1, 2, 3, 4, 5]。这种差异在处理需要包含边界值的场景时至关重要。

当输入参数为负数时 rangeClosed 的行为
IntStream.rangeClosed() 支持负数作为起始或结束值。如果起始值小于结束值,流将按升序生成;如果起始值大于结束值,流将为空。例如,rangeClosed(-2, 2) 生成 [-2, -1, 0, 1, 2]。若调用 rangeClosed(5, 1),则返回空流,因为起始值大于结束值。
import java.util.stream.IntStream;
public class RangeClosedDemo {
public static void main(String[] args) {
// 示例1: 正常闭合范围
System.out.println("rangeClosed(1, 5): " + IntStream.rangeClosed(1, 5).boxed().toList());
// 示例2: 包含负数
System.out.println("rangeClosed(-2, 2): " + IntStream.rangeClosed(-2, 2).boxed().toList());
// 示例3: 起始值大于结束值
System.out.println("rangeClosed(5, 1): " + IntStream.rangeClosed(5, 1).boxed().toList());
// 对比: range 不包含结束值
System.out.println("range(1, 5): " + IntStream.range(1, 5).boxed().toList());
}
}
预期输出: rangeClosed(1, 5): [1, 2, 3, 4, 5] rangeClosed(-2, 2): [-2, -1, 0, 1, 2] rangeClosed(5, 1): [] range(1, 5): [1, 2, 3, 4]
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











