简介
Java 提供了专门的原始流类,这些类提供了处理数值数据类型的有效方法。本教程探讨了生成原始流的各种方法,帮助开发人员优化性能并简化 Java 应用程序中的数值数据处理。
Java 提供了专门的原始流类,这些类提供了处理数值数据类型的有效方法。本教程探讨了生成原始流的各种方法,帮助开发人员优化性能并简化 Java 应用程序中的数值数据处理。
在 Java 中,原始流为处理诸如 int、long 和 double 等原始数据类型提供了专门的流实现。与对象流不同,原始流为数值计算提供了更高效的处理和专门的方法。
Java 提供了三种主要的原始流类型:
| 流类型 | 原始类型 | 主要特点 |
|---|---|---|
| IntStream | int | 专门用于整数操作 |
| LongStream | long | 针对长整数处理进行了优化 |
| DoubleStream | double | 为浮点计算而设计 |
// 使用 Stream.of() 方法
IntStream intStream = IntStream.of(1, 2, 3, 4, 5);
// 基于范围生成流
IntStream rangeStream = IntStream.range(1, 10); // 1 到 9
// 从数组生成流
int[] numbers = {1, 2, 3, 4, 5};
IntStream arrayStream = Arrays.stream(numbers);
原始流具有显著的性能优势:
原始流在涉及以下场景时特别有用:
public class PrimitiveStreamDemo {
public static void main(String[] args) {
// 计算整数之和
int sum = IntStream.rangeClosed(1, 100)
.sum(); // 高效求和
// 求数字的平均值
double average = IntStream.of(10, 20, 30, 40, 50)
.average()
.orElse(0.0);
}
}
sum()、average()、max() 等专门方法Java 中的原始流提供了一种高效且富有表现力的方式来处理数值数据,具有性能优势和专门的处理能力。
注意:在 LabEx 的 Java 编程环境中探索原始流,进行实践学习。
原始流提供了多种生成方法,在数据处理和操作方面具有灵活性。
IntStream directStream = IntStream.of(1, 2, 3, 4, 5);
LongStream longStream = LongStream.of(10L, 20L, 30L);
DoubleStream doubleStream = DoubleStream.of(1.1, 2.2, 3.3);
int[] numbers = {1, 2, 3, 4, 5};
IntStream arrayStream = Arrays.stream(numbers);
double[] values = {1.1, 2.2, 3.3};
DoubleStream doubleArrayStream = Arrays.stream(values);
| 方法 | 描述 | 示例 |
|---|---|---|
range() |
生成不包括上限的流 | IntStream.range(1, 5) // 1,2,3,4 |
rangeClosed() |
生成包括上限的流 | IntStream.rangeClosed(1, 5) // 1,2,3,4,5 |
// 生成随机整数流
IntStream randomInts = new Random().ints(5); // 5 个随机整数
// 有界随机生成
IntStream boundedRandoms = new Random().ints(3, 1, 100); // 1 到 99 之间的 3 个随机整数
IntStream emptyStream = IntStream.empty();
LongStream emptyLongStream = LongStream.empty();
// Iterate 方法
IntStream iteratedStream = IntStream.iterate(0, n -> n + 2)
.limit(5); // 0,2,4,6,8
// Generate 方法
DoubleStream generatedStream = DoubleStream.generate(Math::random)
.limit(3);
IntStream stream1 = IntStream.of(1, 2, 3);
IntStream stream2 = IntStream.of(4, 5, 6);
IntStream combinedStream = IntStream.concat(stream1, stream2);
limit()Java 中的原始流生成提供了多种方法,能够在各种场景中灵活高效地处理数值数据。
原始流提供了强大的处理技术,用于高效的数据操作和分析。
IntStream numbers = IntStream.of(1, 2, 3, 4, 5, 6);
IntStream evenNumbers = numbers.filter(n -> n % 2 == 0);
IntStream squared = IntStream.of(1, 2, 3, 4, 5)
.map(n -> n * n);
| 操作 | 描述 | 示例 |
|---|---|---|
sum() |
计算总和 | IntStream.of(1,2,3).sum() |
average() |
计算算术平均值 | IntStream.of(1,2,3).average() |
max() |
找到最大值 | IntStream.of(1,2,3).max() |
min() |
找到最小值 | IntStream.of(1,2,3).min() |
IntStream numbers = IntStream.of(1, 2, 3, 4, 5);
// 多个聚合操作
IntSummaryStatistics stats = numbers.summaryStatistics();
System.out.println("Count: " + stats.getCount());
System.out.println("Sum: " + stats.getSum());
System.out.println("Average: " + stats.getAverage());
List<Integer> numberList = IntStream.of(1, 2, 3, 4, 5)
.boxed()
.collect(Collectors.toList());
IntStream parallelStream = IntStream.range(1, 1000)
.parallel()
.filter(n -> n % 2 == 0);
IntStream numbers = IntStream.of(1, 2, 3, 4, 5);
// 排序后的流
IntStream sortedStream = numbers.sorted();
// 不同的元素
IntStream distinctStream = numbers.distinct();
OptionalInt result = IntStream.of(1, 2, 3)
.filter(n -> n > 10)
.findFirst();
// 安全检索
int value = result.orElse(-1);
原始流处理技术为数值数据操作提供了强大而高效的方法,为开发人员处理复杂计算任务提供了有力工具。
理解 Java 中的原始流生成对于编写高效简洁的代码至关重要。通过掌握诸如 range()、of() 和 generate() 方法等技术,开发人员可以创建强大的流,从而实现简化的数值数据操作和处理,同时提高性能和可读性。