aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>2019-12-15 02:09:37 +0100
committerbartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>2019-12-15 02:09:37 +0100
commit37bb86e20d542a38614f36dfefda194d1436f11b (patch)
treef30cc276ab75cfa222d6f2bcc0931ac8f83f6eb4 /src
parent1acaaaee43d609f3a99b8c1dce0e67d4efe2ffe7 (diff)
downloadGT5-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.java6
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/util/selfsortinglist/SSListIterators.java25
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