gpt4 book ai didi

java - 如何检查Java流是否有序?

转载 作者:行者123 更新时间:2023-12-05 00:13:32 24 4
gpt4 key购买 nike

是否可以检查 Java Stream是否订购?

通过无序 Stream我的意思是,例如一个流,其中 unordered()被称为。

最佳答案

为了检查流是否无序,您需要获取流的拆分器的特征,并且 test 将第 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 documentation .

更新:
但是调用 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 指出最后一刻。

关于java - 如何检查Java流是否有序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com