244 |
|
} |
245 |
|
|
246 |
|
/** |
247 |
– |
* Returns the array index of the last element. |
248 |
– |
* May return invalid index -1 if there are no elements. |
249 |
– |
*/ |
250 |
– |
final int last() { |
251 |
– |
return dec(tail, elements.length); |
252 |
– |
} |
253 |
– |
|
254 |
– |
/** |
247 |
|
* Returns element at array index i. |
248 |
|
* This is a slight abuse of generics, accepted by javac. |
249 |
|
*/ |
744 |
|
} |
745 |
|
|
746 |
|
private class DescendingIterator extends DeqIterator { |
747 |
< |
DescendingIterator() { cursor = last(); } |
747 |
> |
DescendingIterator() { cursor = dec(tail, elements.length); } |
748 |
|
|
749 |
|
public final E next() { |
750 |
|
if (remaining <= 0) |
771 |
|
final Object[] es = elements; |
772 |
|
if (es[cursor] == null || sub(cursor, head, es.length) + 1 != r) |
773 |
|
throw new ConcurrentModificationException(); |
774 |
< |
for (int i = cursor, end = head - 1, to = (i >= end) ? end : -1; |
774 |
> |
for (int i = cursor, end = head, to = (i >= end) ? end : 0; |
775 |
|
; i = es.length - 1, to = end) { |
776 |
< |
for (; i > to; i--) |
776 |
> |
for (; i >= to; i--) |
777 |
|
action.accept(elementAt(es, i)); |
778 |
|
if (to == end) { |
779 |
< |
if (end != head - 1) |
779 |
> |
if (end != head) |
780 |
|
throw new ConcurrentModificationException(); |
781 |
|
lastRet = head; |
782 |
|
break; |