mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 08:14:09 -08:00
classlib: implement general reversed ListIterator
This commit is contained in:
parent
e383b94e1b
commit
c858542605
|
@ -529,53 +529,7 @@ public class TLinkedList<E> extends TAbstractSequentialList<E> implements TDeque
|
|||
|
||||
@Override
|
||||
public TListIterator<E> listIterator() {
|
||||
TListIterator<E> lit = list.listIterator(list.size());
|
||||
return new TListIterator<>() {
|
||||
@Override
|
||||
public boolean hasPrevious() {
|
||||
return lit.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public E previous() {
|
||||
return lit.next();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int nextIndex() {
|
||||
return list.size() - lit.previousIndex() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int previousIndex() {
|
||||
return list.size() - lit.nextIndex() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(E e) {
|
||||
lit.set(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(E e) {
|
||||
lit.add(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return lit.hasPrevious();
|
||||
}
|
||||
|
||||
@Override
|
||||
public E next() {
|
||||
return lit.previous();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
lit.remove();
|
||||
}
|
||||
};
|
||||
return reversed.listIterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -615,53 +569,7 @@ public class TLinkedList<E> extends TAbstractSequentialList<E> implements TDeque
|
|||
|
||||
@Override
|
||||
public TListIterator<E> listIterator(int index) {
|
||||
TListIterator<E> lit = list.listIterator(list.size() - index);
|
||||
return new TListIterator<>() {
|
||||
@Override
|
||||
public boolean hasPrevious() {
|
||||
return lit.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public E previous() {
|
||||
return lit.next();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int nextIndex() {
|
||||
return list.size() - lit.previousIndex() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int previousIndex() {
|
||||
return list.size() - lit.nextIndex() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(E e) {
|
||||
lit.set(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(E e) {
|
||||
lit.add(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return lit.hasPrevious();
|
||||
}
|
||||
|
||||
@Override
|
||||
public E next() {
|
||||
return lit.previous();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
lit.remove();
|
||||
}
|
||||
};
|
||||
return reversed.listIterator(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -98,6 +98,16 @@ class TReversedList<E> extends TAbstractList<E> {
|
|||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public TListIterator<E> listIterator() {
|
||||
return new ReversedListIterator<>(this, base.listIterator(base.size()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TListIterator<E> listIterator(int idx) {
|
||||
return new ReversedListIterator<>(this, base.listIterator(base.size() - idx));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
base.clear();
|
||||
|
@ -118,4 +128,59 @@ class TReversedList<E> extends TAbstractList<E> {
|
|||
super(base);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ReversedListIterator<E> implements TListIterator<E> {
|
||||
private final TList<E> list;
|
||||
private final TListIterator<E> lit;
|
||||
|
||||
private ReversedListIterator(TList<E> list, TListIterator<E> lit) {
|
||||
this.list = list;
|
||||
this.lit = lit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPrevious() {
|
||||
return lit.hasNext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public E previous() {
|
||||
return lit.next();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int nextIndex() {
|
||||
return list.size() - lit.previousIndex() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int previousIndex() {
|
||||
return list.size() - lit.nextIndex() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(E e) {
|
||||
lit.set(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(E e) {
|
||||
lit.add(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return lit.hasPrevious();
|
||||
}
|
||||
|
||||
@Override
|
||||
public E next() {
|
||||
return lit.previous();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
lit.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user