为什么当我从一个有错误但没有错误的列表中获取LongStream
列表Collectors.toList()
时Stream
?
例子 :
错误 :
Something.mapToLong(Long::parseLong).collect(Collectors.toList())
正确的 :
Something.map(Long::valueOf).collect(Collectors.toList())
为什么当我从一个有错误但没有错误的列表中获取LongStream
列表Collectors.toList()
时Stream
?
例子 :
错误 :
Something.mapToLong(Long::parseLong).collect(Collectors.toList())
正确的 :
Something.map(Long::valueOf).collect(Collectors.toList())
Stream API 中有四个不同的类:Stream
、IntStream
和。后三个用于处理原始值,以获得更好的性能。它们是为这些原始类型量身定制的,它们的方法与方法有很大不同。例如,有一个方法,但没有方法,因为你不能对任何类型的对象求和。原始流不适用于收集器,因为收集器正在接受对象(JDK 中没有特殊的原始收集器)。LongStream
DoubleStream
int
long
double
Stream
LongStream.sum()
Stream.sum()
该类Stream
可用于处理任何对象,包括原始类型包装类Integer
,如Long
和Double
。当您想收集到 时List<Long>
,您不需要long
原始流,而是Long
对象流。所以你需要Stream<Long>
andmap
而不是mapToLong
. 可能很有用mapToLong
,例如,如果您需要一个原始long[]
数组:
long[] result = Something.mapToLong(Long::valueOf).toArray();