795 |
|
return Streams.parallelStream(spliterator()); |
796 |
|
} |
797 |
|
|
798 |
+ |
/** |
799 |
+ |
* This is very similar to ArrayList Spliterator, except for extra |
800 |
+ |
* null checks. |
801 |
+ |
*/ |
802 |
|
static final class PriorityQueueSpliterator<E> implements Spliterator<E> { |
799 |
– |
/* |
800 |
– |
* This is very similar to ArrayList Spliterator, except for |
801 |
– |
* extra null checks. |
802 |
– |
*/ |
803 |
|
private final PriorityQueue<E> pq; |
804 |
|
private int index; // current index, modified on advance/split |
805 |
|
private int fence; // -1 until first use |
806 |
|
private int expectedModCount; // initialized when fence set |
807 |
|
|
808 |
< |
/** Create new spliterator covering the given range */ |
808 |
> |
/** Creates new spliterator covering the given range */ |
809 |
|
PriorityQueueSpliterator(PriorityQueue<E> pq, int origin, int fence, |
810 |
|
int expectedModCount) { |
811 |
|
this.pq = pq; |
822 |
|
} |
823 |
|
return hi; |
824 |
|
} |
825 |
< |
|
825 |
> |
|
826 |
|
public PriorityQueueSpliterator<E> trySplit() { |
827 |
|
int hi = getFence(), lo = index, mid = (lo + hi) >>> 1; |
828 |
|
return (lo >= mid) ? null : |
829 |
< |
new PriorityQueueSpliterator<E>(pq, lo, index = mid, |
829 |
> |
new PriorityQueueSpliterator<E>(pq, lo, index = mid, |
830 |
|
expectedModCount); |
831 |
|
} |
832 |
|
|
875 |
|
return false; |
876 |
|
} |
877 |
|
|
878 |
< |
public long estimateSize() { |
879 |
< |
return (long) (getFence() - index); |
878 |
> |
public long estimateSize() { |
879 |
> |
return (long) (getFence() - index); |
880 |
|
} |
881 |
|
|
882 |
|
public int characteristics() { |