深入了解分路器特性
为了尝试深入了解Java流和拆分器,我对拆分器特征有一些微妙的问题:
Q1: Stream.empty()
vs Stream.of()
(Stream.of() 不带 args)
-
Stream.empty()
: 尺寸, 尺寸 -
Stream.of()
:子大小、不可变、大小、有序
为什么不具有相同的特征?请注意,当与 Stream.concat() 结合使用时,它会产生影响(特别是没有 )。我想说的是,这不仅应该是不可变的和有序的,而且还应该有独特的和非空洞的。此外,只有一个参数具有DISTICT,这是有道理的。Stream.empty()
Stream.of()
ORDERED
Stream.empty()
Stream.of()
Q2: LongStream.of()
没有 NONNULL
刚刚注意到 NONNULL 在 中不可用。不是所有s,s和s的主要特征吗?LongStream.of
NONNULL
LongStream
IntStream
DoubleStream
Q3: LongStream.range(,)
vs LongStream.range(,).boxed()
-
LongRange.range(,)
:子大小、不可变、非空心、大小、有序、排序、不同 -
LongStream.range(,).boxed()
: 尺寸, 尺寸, 有序
为什么会失去所有这些特征?它不应该失去任何东西。.boxed()
我知道可以失去NONNULL,IMMUTABLE和DISTICT,但是...没有道理。.mapToObj()
.boxed()
问题 4:.peek()
丢失了 IMMUTABLE 和 NONNULL
LongStream.of(1)
: SUBSIZE, IMMUTABLE, NONNULL, SIZE, ... : SUBSIZE, SIZE, ...LongStream.of(1).peek()
为什么会失去这些特征? 不应该真的失去任何东西。.peek()
.peek
Q5: .skip()
, .limit()
丢失 SUBSIZE, IMMUTABLE, NONNULL, SIZE
请注意,这些操作丢失了 SUBSIZE、IMMUTABLE、NONNULL、SIZE。为什么?如果大小可用,则也很容易计算最终大小。
问题 6:.filter()
丢失不可变、非空
请注意,此操作也会丢失 SUBSIZED、IMMUTABLE、NONNULL、SIZE。失去SUBSIZE和SIZE是有道理的,但其他两个没有意义。为什么?
如果一个深刻理解分离器的人可以带来一些清晰度,我将不胜感激。谢谢。