어떻게 자바 스트림이 정렬되어 있는지 여부를 확인하려면?

Herosław Miraszewski :

그것은 자바가 있는지 확인하는 것이 가능 Stream주문이나되지?

정렬되지 않은함으로써 StreamI의 평균 예를 들어 스트림있는 unordered()불렸다.

Lyashko 키릴 :

스트림 당신이 스트림의 spliterator 및 테스트의 특성을 얻을 필요가 정렬되지 않은 경우 확인하기 위해 제 3 회 비트가 하나로 설정된다.

당신은 예를 들어,이 코드를 사용할 수 있습니다 :

    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=8970&siteId=1