diff options
author | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2019-12-15 02:09:37 +0100 |
---|---|---|
committer | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2019-12-15 02:09:37 +0100 |
commit | 37bb86e20d542a38614f36dfefda194d1436f11b (patch) | |
tree | f30cc276ab75cfa222d6f2bcc0931ac8f83f6eb4 /src | |
parent | 1acaaaee43d609f3a99b8c1dce0e67d4efe2ffe7 (diff) | |
download | GT5-Unofficial-37bb86e20d542a38614f36dfefda194d1436f11b.tar.gz GT5-Unofficial-37bb86e20d542a38614f36dfefda194d1436f11b.tar.bz2 GT5-Unofficial-37bb86e20d542a38614f36dfefda194d1436f11b.zip |
Fixed SSList Iterators
Signed-off-by: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>
Former-commit-id: ac9f5e451758b0e50ae33e6fc02985f77d4e4596
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSList.java | 6 | ||||
-rw-r--r-- | src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSListIterators.java | 25 |
2 files changed, 19 insertions, 12 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSList.java b/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSList.java index 11ce5ebafc..769b32638d 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSList.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSList.java @@ -197,7 +197,7 @@ public class SSList<E> implements List<E>, Deque<E>, Set<E> { // <0,1,3> N<0,3,2> <3,2,4> <2,4,5> } - private SSListNode<E> getNode(int index) { + SSListNode<E> getNode(int index) { if (index <= (size / 2)) { SSListNode<E> x = head; for (int i = 0; i < index; i++) @@ -337,12 +337,12 @@ public class SSList<E> implements List<E>, Deque<E>, Set<E> { @Override public ListIterator<E> listIterator() { - return new SSListIterators.SSListListIterator<>(head,tail); + return new SSListIterators.SSListListIterator<>(head,tail,false); } @Override public ListIterator<E> listIterator(int index) { - return null; + return new SSListIterators.SSListListIterator<>(this,index); } @Override diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSListIterators.java b/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSListIterators.java index c3f3aba347..83b3c66046 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSListIterators.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSListIterators.java @@ -35,15 +35,24 @@ public class SSListIterators { final SSListNode<E> tail; SSListNode<E> current; int counter = 0; - public SSListListIterator(SSListNode<E> head,SSListNode<E> tail) { + boolean reverse; + public SSListListIterator(SSListNode<E> head,SSListNode<E> tail, boolean reverse) { this.head = head; this.tail = tail; - current = null; + current = reverse ? tail : head; + this.reverse = reverse; + } + + public SSListListIterator(SSList<E> list, int index) { + this.head = list.head; + this.tail = list.tail; + current = list.getNode(index); + counter = index; } @Override public boolean hasNext() { - return head != current; + return reverse ? head != current : tail != current; } @Override @@ -56,7 +65,7 @@ public class SSListIterators { @Override public boolean hasPrevious() { - return tail != current; + return !reverse ? head != current : tail != current; } @Override @@ -97,8 +106,7 @@ public class SSListIterators { final SSListNode<E> head; SSListNode<E> current; public SSListIterator(SSListNode<E> head) { - this.head = head; - current = null; + this.head = this.current = head; } @Override @@ -118,9 +126,8 @@ public class SSListIterators { final SSListNode<E> tail; SSListNode<E> current; - public SSListReverseIterator(SSListNode<E> head) { - this.tail = head; - current = null; + public SSListReverseIterator(SSListNode<E> tail) { + this.tail = this.current = tail; } @Override |