为了试图深入理解javastream和分割器,我有一些关于分割器特性的细微问题: Q1: Stream.empty() vs Stream.of() (Stream.of()没有参数) Stream.empty() : 已经过时,已经大小 Stream.of() :已预订, 不可预约 ,已预订,已预订 为什么Stream.empty()没有Stream.empty()的相同特征? 请注意,它与Stream.concat()(特别是没有ORDERED )一起使用时会产生影响。 我会说, Stream.empty()应该不只是IMMUTABLE和ORDERED,但也DISTINCT和NONNULL 。 也有道理Stream.of()只有一个参数有DISTICT 。 Q2: LongStream.of()没有NONNULL 只注意到NONNULL在LongStream.of不可用。 是不是NONNULL是所有LongStream , IntStream和DoubleStream的主要特征? Q3: LongStream.range(,)与LongStream.range(,).boxed() LongRange.range(,) :已预订, 不可更改,不可空,已大小,已sorting,已sorting,已排除 LongStream.range(,).boxed() : 已订购,已订购,已订购 为什么.boxed()失去了所有这些特征? 它不应该失去任何。 我知道.mapToObj()可能会失去NONNULL,IMMUTABLE和DISTICT ,但.boxed() …没有任何意义。 Q4: .peek()失去IMMUTABLE和NONNULL LongStream.of(1) : SUBSIZED,IMMUTABLE,NONNULL,SIZED,… LongStream.of(1).peek() : SUBSIZED,SIZED,… 为什么.peek()失去了这些特征? .peek不应该真的失去任何。 Q5: .skip() .limit()失去了SUBSIZED,IMMUTABLE,NONNULL,SIZED 只要注意,这些操作失去了SUBSIZED,IMMUTABLE,NONNULL,SIZED 。 […]
我无法理解Java 8中的Stream接口,特别是与Spliterator和Collector接口有关的接口。 我的问题是,我简直无法理解Spliterator和Collector接口,结果Stream接口对我来说仍然有些模糊。 Spliterator和Collector究竟是什么,我怎样才能使用它们? 如果我愿意写我自己的Spliterator或Collector (也许是我自己的Stream在这个过程中),我该怎么做,而不是做什么? 我阅读了一些散布在networking上的例子,但由于这里的一切都是新的,可能会有所变化,示例和教程仍然非常稀less。