66

Javaストリームとスプリッテレータを深く理解しようとするために、スプリッテレータの特性についていくつかの微妙な質問があります:

Q1:Stream.empty()Stream.of()(引数なしの Stream.of())

  • Stream.empty():サブサイズ、サイズ
  • Stream.of(): SUBSIZED, IMMUTABLE , SIZED, ORDERED

Stream.empty()が と同じ特性を持たないのはなぜStream.of()ですか? Stream.concat() と組み合わせて使用​​すると影響があることに注意してください (特に を持たない場合ORDERED)。IMMUTABLE と ORDEREDだけでなく、DISTINCT と NONNULLStream.empty()必要だと思います。また、DISTICTを持つ引数が1つだけでも意味があります。Stream.of()

Q2: NONNULLLongStream.of()がない

では NONNULL を使用できないことに気付きましたLongStream.ofNONNULLすべてLongStreamの 、 、IntStreamの主な特徴ではありませんDoubleStreamか?

Q3: LongStream.range(,)vsLongStream.range(,).boxed()

  • LongRange.range(,): SUBSIZED、IMMUTABLE、NONNULL、SIZED、ORDERED、SORTED 、DISTINCT
  • LongStream.range(,).boxed(): SUBSIZED、SIZED、ORDERED

なぜ.boxed()これらすべての特性を失うのですか?それは失うべきではありません。

NONNULL、IMMUTABLE、および DISTICT.mapToObj()を失う可能性があることは理解していますが、...意味がありません。.boxed()

Q4: IMMUTABLE と NONNULL を.peek()失う

LongStream.of(1): SUBSIZED、IMMUTABLE、NONNULL、SIZED、... LongStream.of(1).peek() : SUBSIZED、SIZED、...

なぜ.peek()これらの特性を失うのですか?.peek本当に負けてはいけません。

Q5: .skip()SUBSIZED、IMMUTABLE、NONNULL、SIZED を.limit()失う

これらの操作ではSUBSIZED、IMMUTABLE、NONNULL、SIZEDが失われることに注意してください。なんで?サイズが利用可能な場合は、最終的なサイズも簡単に計算できます。

Q6: IMMUTABLE、NONNULL を.filter()失う

この操作はSUBSIZED、IMMUTABLE、NONNULL、SIZEDも失うことに注意してください。SUBSIZED と SIZEDを失うのは理にかなっていますが、他の 2 つは意味がありません。なんで?


スプリッテレータを深く理解している人が明確にすることができれば幸いです。ありがとう。

4

1 に答える 1