File tree Expand file tree Collapse file tree 1 file changed +21
-17
lines changed
src/projections/Tools/Timeline/RangeQueries Expand file tree Collapse file tree 1 file changed +21
-17
lines changed Original file line number Diff line number Diff line change 11package projections .Tools .Timeline .RangeQueries ;
22
33import java .util .Iterator ;
4- import java .util .LinkedList ;
54import java .util .NoSuchElementException ;
65
7- public class MergedIterator <E > implements Iterator <E >{
6+ public final class MergedIterator <E > implements Iterator <E > {
87 private final Iterator <E > iterators [];
98 private int index ;
9+ private boolean internalHasNext ;
1010
11- public MergedIterator (Iterator <E >... iters ){
11+ public MergedIterator (Iterator <E >... iters ) {
1212 iterators = iters ;
1313 index = 0 ;
14+ loadHasNext ();
1415 }
15-
16-
17- @ Override
18- public boolean hasNext () {
19- while (index < iterators .length && !iterators [index ].hasNext ()) {
20- index ++;
21- }
2216
23- return index < iterators .length ;
17+ @ Override
18+ public final boolean hasNext () {
19+ return internalHasNext ;
2420 }
2521
2622 @ Override
27- public E next () {
28- if (hasNext ()) {
29- return iterators [index ].next ();
23+ public final E next () {
24+ if (internalHasNext ) {
25+ E next = iterators [index ].next ();
26+ loadHasNext ();
27+ return next ;
3028 }
29+ else
30+ throw new NoSuchElementException ();
31+ }
3132
32- throw new NoSuchElementException ();
33+ private final void loadHasNext () {
34+ while (index < iterators .length && !iterators [index ].hasNext ()) {
35+ index ++;
36+ }
37+ internalHasNext = index < iterators .length ;
3338 }
3439
3540 @ Override
36- public void remove () {
41+ public final void remove () {
3742 throw new UnsupportedOperationException ();
3843 }
39-
4044}
You can’t perform that action at this time.
0 commit comments