概述
IntStream
是一个特化的 Stream
接口,用于操作 int
类型的数据。它位于 java.util.stream
包中,提供了一组丰富的方法来处理整数流,如映射、过滤、聚合等。
应用场景
- 数值计算和处理: 适用于对整数进行数值计算、统计或转换操作。
- 数据转换和映射: 可以将整数流映射为其他类型的流,例如
DoubleStream
或Stream<Integer>
。 - 过滤和筛选: 根据条件过滤整数流中的元素。
- 聚合操作: 对整数流进行归约、汇总、平均值等聚合操作。
- 并行处理: 支持并行流操作,可以提升处理效率。
示例代码
示例1:生成一个范围内的整数流,并对其进行操作
import java.util.stream.IntStream;
public class IntStreamExample {
public static void main(String[] args) {
// 生成一个范围在 [1, 5] 的整数流,并输出每个元素的平方
IntStream.rangeClosed(1, 5)
.map(i -> i * i)
.forEach(System.out::println);
}
}
输出结果:
1
4
9
16
25
示例2:过滤一个整数数组中的偶数并求和
import java.util.Arrays;
public class IntStreamExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 过滤偶数并求和
int sum = Arrays.stream(numbers)
.filter(n -> n % 2 == 0)
.sum();
System.out.println("Sum of even numbers: " + sum);
}
}
输出结果:
Sum of even numbers: 30
示例3:使用并行流计算整数数组的平均值
import java.util.Arrays;
public class IntStreamExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 使用并行流计算平均值
double average = Arrays.stream(numbers)
.parallel() // 并行流
.average()
.orElse(0.0); // 如果数组为空,则返回默认值 0.0
System.out.println("Average: " + average);
}
}
输出结果(此处是顺序执行的结果,实际上可能会有差异):
Average: 5.5
总结
IntStream
提供了丰富的操作方法来处理整数流,能够简化数值计算、数据转换、过滤、聚合等操作。它是 Java 8 引入的函数式编程特性之一,利用流式处理可以编写更加清晰和简洁的代码,提升代码的可读性和可维护性。