Java 河道和溪流

Java 河道和溪流,java,java-stream,Java,Java Stream,这两者有什么区别?它们是一样的吗 流内API 过滤器 Stream过滤器(谓词IntStream->Stream仅属于int 流->流对象的流(任何对象包括整数、双精度、长、字符串等)它们是相同的吗? 两者都在扩展BaseStream。因此它们有一个公共接口。但是filter和mapToInt方法不属于此接口 这两者有什么区别? Stream是T的Stream,其中T是Stream的泛型类型参数。由于泛型类型参数不能将基元类型作为类型参数,因此无法声明Stream。要拥有基元整数流,必须使用专用

这两者有什么区别?它们是一样的吗

流内API

过滤器


Stream过滤器(谓词
IntStream
->
Stream
仅属于
int

->
对象的
(任何对象包括
整数
双精度
字符串
等)

它们是相同的吗?
两者都在扩展
BaseStream
。因此它们有一个公共接口。但是
filter
mapToInt
方法不属于此接口

这两者有什么区别?
Stream
T
Stream
,其中
T
Stream
的泛型类型参数。由于泛型类型参数不能将基元类型作为类型参数,因此无法声明
Stream
。要拥有基元整数流,必须使用专用类型
IntStream
n定义

如果您有一个
并且想要使用类型
IntStream
提供的方法(即
min()
toArray()
)首先需要将
Integer
元素转换为
int
元素。这是应用于
流的
mapToInt
方法的任务,该方法将返回
IntStream
。要将元素转换为
int
此方法需要执行实际映射/转换的
函数。

例如:

    int[] arrayOfPositiveInts = Stream.of(0, 1, 2, 3, 4)
            .filter(i -> i > 0)
            .mapToInt(Integer::intValue)
            .toArray();
这显示了
filter
方法,该方法应用于
Stream
,但用于将
Integer
元素与
int
0
进行比较。该方法
mapToInt
使用方法
Integer.intValue()
显式返回
整数
对应的
int

由于取消装箱,您还可以使用:

.mapToInt(i -> i)
但是
Function.identity()
的实现与此相同,将无法工作:

.mapToInt(Function.identity()

因为它():

始终返回其输入参数

流的类型为
Integer
,而
mapToInt
需要
int

总结:

Stream
IntStream
之间的区别(根据此问题的标题)是流元素的类型。
Stream
处理任意。
IntStream
是一种专用类型,处理
int
类型的元素。当然,这两种类型都提供不同的方法。

您读过IntStream的javadoc吗?