Javaストリームを発注されているかどうかを確認する方法?

HerosławMiraszewski:

それはJavaがいるかどうかを確認することが可能であるStream命じたかされていませんか?

順不同によってStreamIの平均値、例えばストリームれているunordered()と呼ばれていました。

Lyashkoキリル:

ストリームが順不同ているかどうかを確認するためには、ストリームのspliteratorとテストの特性を取得する必要があります第3回ビットが1に設定されています。

あなたは、一例として、このコードスニペットを使用することができます。

    Stream<Integer> sorted = Stream.of(1, 2, 3).sorted();
    System.out.println((sorted.spliterator().hasCharacteristics(Spliterator.SORTED));

    sorted = Stream.of(1, 2, 3).sorted().unordered();
    System.out.println((sorted.spliterator().hasCharacteristics(Spliterator.SORTED));

    Stream<Integer> unordered = Stream.of(1, 2, 3).unordered();
    System.out.println((unordered.spliterator().hasCharacteristics(Spliterator.SORTED));

    unordered = Stream.of(1, 2, 3);
    System.out.println((unordered.spliterator().hasCharacteristics(Spliterator.SORTED));

詳細については次のことが確認できSpliteratorのマニュアルを

UPDATE: しかしの呼び出しは、spliterator()これ以上の操作がそれに行うことができないことを意味するものを、ストリーム上の端末操作です。要素をも消費されることにもかかわらず、どのような方法では、同じ特性を持つ新しいストリームを作成することが可能となります。

    Spliterator<Integer> spliterator = unordered.spliterator();
    System.out.println(spliterator.hasCharacteristics(Spliterator.SORTED));
    Stream<Integer> newStream = StreamSupport.stream(spliterator, unordered.isParallel())
                                             .onClose(unordered::close); // in case if you have some close handlers on initial stream

おかげ@Holger最後の瞬間を指し示します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=8971&siteId=1