在java中,`arrays.stream(int[])`等针对基本类型数组的重载方法会返回对应的`intstream`、`longstream`或`doublestream`,这些是专门处理基本类型的流。要使用lambda表达式,直接调用流上的终端操作(如`foreach`)即可,无需手动装箱为对象流。

如何对int数组进行过滤和求和
对于基本类型数组,可以直接使用`IntStream`提供的特有方法,例如`filter`接收`IntPredicate`,`sum`直接返回`int`结果。这种方式避免了将每个元素装箱为`Integer`带来的内存开销和性能损耗。

import java.util.Arrays;
public class Main {
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
如何将基本类型流转换为对象流
如果后续操作需要用到`Stream

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
// 转换为List<integer>
List<integer> list = Arrays.stream(numbers)
.boxed()
.collect(Collectors.toList());
System.out.println(list);
}
}</integer></integer>
预期输出:[1, 2, 3, 4, 5]
为什么基本类型流没有mapToInt
`IntStream`本身已经是映射后的结果,其`map`操作接收`IntUnaryOperator`并返回`IntStream`,因此不需要像对象流那样通过`mapToInt`来转换回基本类型流。直接使用`map`即可保持流的基本类型特性,避免额外的装箱/拆箱步骤。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











