Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Java流是否已排序?_Java_Java Stream - Fatal编程技术网

如何检查Java流是否已排序?

如何检查Java流是否已排序?,java,java-stream,Java,Java Stream,是否可以检查Java流是否已订购 通过无序流我的意思是,例如,调用了unordered()的流。为了检查流是否无序,您需要获取流的拆分器的特征,并且test is 3th bit设置为1 您可以使用此代码段作为示例: Stream<Integer> sorted = Stream.of(1, 2, 3).sorted(); System.out.println((sorted.spliterator().hasCharacteristics(Spliterator.S

是否可以检查Java
流是否已订购


通过无序
我的意思是,例如,调用了
unordered()
的流。

为了检查流是否无序,您需要获取流的拆分器的特征,并且test is 3th bit设置为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));

感谢@Holger指出最后一刻。

任何此类检查都将消耗流。可以接受吗?您只需在拆分器上调用
.hasCharacteristics(Spliterator.ORDERED)
。但是请记住,在
流上调用
spliterator()
会消耗流。@Holger,谢谢,我错过了
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