14 |
|
import java.util.concurrent.locks.Condition; |
15 |
|
import java.util.concurrent.locks.ReentrantLock; |
16 |
|
import java.util.Spliterator; |
17 |
+ |
import java.util.Spliterators; |
18 |
|
import java.util.stream.Stream; |
19 |
|
import java.util.stream.Streams; |
20 |
|
import java.util.function.Consumer; |
1120 |
|
private class Itr extends AbstractItr { |
1121 |
|
Node<E> firstNode() { return first; } |
1122 |
|
Node<E> nextNode(Node<E> n) { return n.next; } |
1122 |
– |
// minimal, unsplittable Spliterator implementation |
1123 |
– |
public boolean tryAdvance(Consumer<? super E> action) { |
1124 |
– |
if (hasNext()) { |
1125 |
– |
action.accept(next()); |
1126 |
– |
return true; |
1127 |
– |
} |
1128 |
– |
return false; |
1129 |
– |
} |
1130 |
– |
public void forEach(Consumer<? super E> action) { |
1131 |
– |
while (hasNext()) |
1132 |
– |
action.accept(next()); |
1133 |
– |
} |
1134 |
– |
public int characteristics() { |
1135 |
– |
return Spliterator.ORDERED | Spliterator.NONNULL | Spliterator.CONCURRENT; |
1136 |
– |
} |
1123 |
|
} |
1124 |
|
|
1125 |
|
/** Descending iterator */ |
1168 |
|
} |
1169 |
|
else if ((est -= i) <= 0L) |
1170 |
|
est = 1L; |
1171 |
< |
return Collections.arraySnapshotSpliterator |
1171 |
> |
return Spliterators.spliterator |
1172 |
|
(a, 0, i, Spliterator.ORDERED | Spliterator.NONNULL | |
1173 |
|
Spliterator.CONCURRENT); |
1174 |
|
} |