diff options
3 files changed, 20 insertions, 13 deletions
diff --git a/build.properties b/build.properties index e03086e26c..73f214419f 100644 --- a/build.properties +++ b/build.properties @@ -22,7 +22,7 @@ mc_version=1.7.10 majorUpdate=0 minorUpdate=5 -buildNumber=3_pre4 +buildNumber=3_pre5 APIVersion=8 ic2.version=2.2.828-experimental gregtech.version=5.09.32.36 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 |