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 と NONNULLもStream.empty()必要だと思います。また、DISTICTを持つ引数が1つだけでも意味があります。Stream.of()
Q2: NONNULLLongStream.of()がない
では NONNULL を使用できないことに気付きましたLongStream.of。NONNULLすべてLongStreamの 、 、IntStreamの主な特徴ではありませんDoubleStreamか?
Q3: LongStream.range(,)vsLongStream.range(,).boxed()
LongRange.range(,): SUBSIZED、IMMUTABLE、NONNULL、SIZED、ORDERED、SORTED 、DISTINCTLongStream.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 つは意味がありません。なんで?
スプリッテレータを深く理解している人が明確にすることができれば幸いです。ありがとう。