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