I am having trouble fixing four debug issues
namely the constructor, and iterator methods
Here is my code
Here is the test drive for my code
Here is the output of my code
can anyone isolate and provide any insight on why I am getting those errors and how i can fix them?
namely the constructor, and iterator methods
Here is my code
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.NoSuchElementException
public class Proj61773 {
public static void main(String[] args) throws java.io.IOException {
DoublyLinkedList<String> list = new DoublyLinkedList<String>();
list.addHead("Test1");
list.add(1, "Test2");
list.add(2, "Test3");
list.add(3, "Test4");
list.add(4, "Test5");
list.add("Test6");
list.add("Test7");
System.out.println(list);
list.remove(list.size());
System.out.println(list);
DoublyLinkedList<Integer> list2 = new DoublyLinkedList<Integer>();
list2.addHead(new Integer(1));
list2.addHead(new Integer(2));
list2.addTail(new Integer(9));
list2.addHead(new Integer(3));
list2.addTail(new Integer(11));
list2.add(2, new Integer(0));
System.out.println(list2);
list2.remove(list2.size());
System.out.println(list2);
list2.remove(list2);
System.out.println(list2);
}
}
// Doubly LinkedList class
class DoublyLinkedList<E> implements java.util.List<E> {
private int currentSize = 0;
private DoublyLinkedListNode<E> head = new DoublyLinkedListNode<E>(null);
private DoublyLinkedListNode<E> tail = new DoublyLinkedListNode<E>(null);
// constructor
public DoublyLinkedList() {
head.setPrev(null);
head.setNext(tail);
tail.setPrev(head);
tail.setNext(null);
}
// constructor
public DoublyLinkedList(DoublyLinkedListNode<E> head) {
this.head = head;
this.tail = head;
currentSize = 1;
}
// constructor
public DoublyLinkedList(Collection<? extends E> c) {
this();
Iterator<? extends E> itr = c.iterator();
while(itr.hasNext()) {
E element = (E) itr.next();
add(element);
}
//addAll(c);
}
public boolean isEmpty() {
return currentSize == 0;
}
public int getSize() {
return currentSize;
}
@Override
public int size() {
return currentSize;
}
// WORKING for defect # 6
public E get(int index) {
if (index < 0 || index > currentSize) {
throw new IndexOutOfBoundsException();
} else {
DoublyLinkedListNode<E> cursor = head;
for (int i = 0; i <= index; i++) {
cursor = cursor.getNext();
}
return (E) cursor.value;
}
}
private E getPos(int index) {
if (index < 0 || index > currentSize) {
throw new IndexOutOfBoundsException();
} else {
DoublyLinkedListNode<E> cursor = head;
for (int i = 0; i <= index; i++) {
cursor = cursor.getNext();
}
return (E) cursor;
}
}
@Override
public int indexOf(Object value) {
int index = 0;
DoublyLinkedListNode<E> current = head.next;
while (current != tail) {
//if (current.value.equals(current)) {
if (current.getValue().equals(value)) {
return index;
}
index++;
current = current.next;
}
return -1;
}
@Override
public boolean contains(Object value) {
return indexOf(value) != -1;
}
@Override
public void add(int index, E element) {
DoublyLinkedListNode<E> cursor = extracted(index);
DoublyLinkedListNode<E> temp = new DoublyLinkedListNode<E>(element);
temp.setPrev(cursor);
temp.setNext(cursor.getNext());
cursor.getNext().setPrev(temp);
cursor.setNext(temp);
currentSize++;
}
private DoublyLinkedListNode<E> extracted(int index) {
return (DoublyLinkedListNode<E>) getPos(index-1);
}
// method to add from head
public void addHead(E value) {
DoublyLinkedListNode<E> cursor = head;
DoublyLinkedListNode<E> temp = new DoublyLinkedListNode<E>(value);
temp.setPrev(cursor);
temp.setNext(cursor.getNext());
cursor.getNext().setPrev(temp);
cursor.setNext(temp);
currentSize++;
}
// method to add from tail
public void addTail(E value) {
DoublyLinkedListNode<E> cursor = tail.getPrev();
DoublyLinkedListNode<E> temp = new DoublyLinkedListNode<E>(value);
temp.setPrev(cursor);
temp.setNext(cursor.getNext());
cursor.getNext().setPrev(temp);
cursor.setNext(temp);
currentSize++;
}
@Override
public boolean add(E element) {
addTail(element);
return true;
}
@Override
public E remove(int index) {
if (index == 0) {
throw new IndexOutOfBoundsException();
} else {
DoublyLinkedListNode<E> result = extracted(index);
result.getNext().setPrev(result.getPrev());
result.getPrev().setNext(result.getNext());
currentSize--;
return result.getValue();
}
}
@Override
public boolean remove(Object obj) {
if (obj == null) {
for (DoublyLinkedListNode<E> x = head; x != null; x = x.next) {
if (x.value == null) {
unlink(x);
return true;
}
}
} else {
for (DoublyLinkedListNode<E> x = head; x != null; x = x.next) {
if (obj.equals(x.value)) {
unlink(x);
return true;
}
}
}
return false;
}
private E unlink (DoublyLinkedListNode<E> x) {
final E element = x.value;
final DoublyLinkedListNode<E> next = x.next;
final DoublyLinkedListNode<E> prev = x.prev;
if (prev == null) {
head = next;
} else {
prev.next = next;
x.prev = null;
}
if (next == null) {
tail = prev;
} else {
next.prev = prev;
x.next = null;
}
x.value = null;
currentSize--;
return element;
}
@Override
public void clear() {
head.next = tail;
tail.prev = head;
currentSize = 0;
}
//@Override
public Iterator<E> iterator() {
return new DoublyLinkedIterator();
}
/**
* Returns the (non-null) Node at the specified element index.
*/
private DoublyLinkedListNode<E> node(int index) {
if (index < (currentSize >> 1)) {
DoublyLinkedListNode<E> x = head;
for (int i = 0; i < index; i++)
x = x.next;
return x;
} else {
DoublyLinkedListNode<E> x = tail;
for (int i = currentSize - 1; i > index; i--)
x = x.prev;
return x;
}
}
@Override
public boolean addAll(Collection<? extends E> c) {
return addAll(currentSize, c);
}
@Override
public boolean addAll(int index, Collection<? extends E> c) {
Object[] a = c.toArray();
int numNew = a.length;
if (numNew == 0) {
return false;
}
DoublyLinkedListNode<E> pred, succ;
if (index == currentSize) {
succ = null;
pred = tail;
} else {
succ = node(index);
pred = succ.prev;
}
for (Object o : a) {
@SuppressWarnings("unchecked") E e = (E) o;
DoublyLinkedListNode<E> newNode = new DoublyLinkedListNode<E> ( pred, e, null);
if (pred == null) {
head = newNode;
} else {
pred.next = newNode;
}
pred = newNode;
}
if (succ == null) {
tail = pred;
} else {
pred.next = succ;
succ.prev = pred;
}
currentSize += numNew;
return true;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
DoublyLinkedListNode<E> current = head;
if (current == null) {
return "[]";
}
sb.append("[");
while (current != null) {
if (current.value!=null) {
sb.append(current.value).append(", ");
}
current = current.getNext();
}
int strLength = sb.length();
sb.delete(strLength-2, strLength);
sb.append(']');
return sb.toString();
}
//// DoublyLinkedIterator class
private class DoublyLinkedIterator implements java.util.Iterator<E> {
private DoublyLinkedListNode<E> currentNode;
private DoublyLinkedListNode<E> nextNode;
private int nextIndex = 0;
private DoublyLinkedIterator() {
currentNode = head;
}
public boolean hasNext() {
return (currentNode != null );
}
public E next() {
if (hasNext()) {
currentNode = currentNode.next;
E result = currentNode.value;
//System.out.println(" current.value: "+ current.value);
//System.out.println(" result: "+result);
nextIndex++;
return result;
} else {
throw new java.util.NoSuchElementException();
}
}
public void remove() {
if (currentNode == null) {
throw new java.util.NoSuchElementException();
}
//DoublyLinkedListNode<E> lastNext = currentNode.next;
//System.out.println("**** currentNode - "+currentNode.value);
//unlink(currentNode);
DoublyLinkedList.this.remove(currentNode);
//if (nextNode == currentNode) {
// nextNode = lastNext;
//} else {
// nextIndex--;
//}
//currentNode = null;
currentSize++;
}
}
// Node class
private class DoublyLinkedListNode<E> {
private E value;
private DoublyLinkedListNode<E> next;
private DoublyLinkedListNode<E> prev;
public DoublyLinkedListNode(E element) {
this.value = element;
}
public DoublyLinkedListNode(DoublyLinkedListNode<E> n1, E element, DoublyLinkedListNode<E> n2) {
this.value = element;
setPrev(prev);
setNext(next);
}
public void setValue(E element) {
this.value = element;
}
public E getValue() {
return this.value;
}
public void setPrev(DoublyLinkedListNode<E> prev) {
this.prev = prev;
}
public void setNext(DoublyLinkedListNode<E> next) {
this.next = next;
}
public DoublyLinkedListNode<E> getNext() {
return this.next;
}
public DoublyLinkedListNode<E> getPrev() {
return this.prev;
}
}
@Override
public boolean containsAll(Collection<?> c) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public int lastIndexOf(Object o) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public boolean removeAll(Collection<?> c) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public boolean retainAll(Collection<?> c) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public E set(int index, E element) {
throw new UnsupportedOperationException("not implemented");
}
@Override
public List<E> subList(int fromIndex, int toIndex) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public <T> T[] toArray(T[] a) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
}
@Override
public ListIterator<E> listIterator() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("not implemented");
//return new DoublyLinkedListItr(currentSize);
}
@Override
public ListIterator<E> listIterator(int index) {
// TODO Auto-generated method stub
return new DoublyLinkedListItr(index);
}
// EXTRA CREDIT
private class DoublyLinkedListItr implements ListIterator<E> {
private DoublyLinkedListNode<E> lastReturned = head;
private DoublyLinkedListNode<E> next;
private int nextIndex;
private int expectedModCount = currentSize;
public DoublyLinkedListItr(int index) {
if (index < 0 || index > currentSize)
throw new IndexOutOfBoundsException("Index: " + index
+ ", Size: " + currentSize);
if (index < (currentSize >> 1)) {
next = head.getNext();
for (nextIndex = 0; nextIndex < index; nextIndex++)
next = next.getNext();
} else {
next = head;
for (nextIndex = currentSize; nextIndex > index; nextIndex--) {
next = next.getPrev();
}
}
}
public DoublyLinkedListItr() {
}
public boolean hasNext() {
return nextIndex != currentSize;
}
public E next() {
checkForComodification();
if (nextIndex == currentSize) {
throw new NoSuchElementException();
}
lastReturned = next;
next = next.getNext();
nextIndex++;
System.out.println(" lastReturned.getValue(): "+lastReturned.getValue());
return lastReturned.getValue();
}
public boolean hasPrevious() {
return nextIndex != 0;
}
public E previous() {
if (nextIndex == 0)
throw new NoSuchElementException();
lastReturned = next = next.prev;
nextIndex--;
checkForComodification();
return lastReturned.getValue();
}
public int nextIndex() {
return nextIndex;
}
public int previousIndex() {
return nextIndex - 1;
}
public void remove() {
checkForComodification();
DoublyLinkedListNode<E> lastNext = lastReturned.next;
try {
DoublyLinkedList.this.remove(lastReturned);
} catch (NoSuchElementException e) {
throw new IllegalStateException();
}
if (next == lastReturned)
next = lastNext;
else
nextIndex--;
lastReturned = head;
expectedModCount++;
}
public void set(E e) {
if (lastReturned == head)
throw new IllegalStateException();
checkForComodification();
lastReturned.value = e;
}
public void add(E e) {
checkForComodification();
lastReturned = head;
DoublyLinkedListNode<E> newNode = new DoublyLinkedListNode<E>(next, e, next.getPrev());
newNode.prev.next = newNode;
newNode.next.prev = newNode;
currentSize++;
nextIndex++;
expectedModCount++;
}
final void checkForComodification() {
if (currentSize != expectedModCount)
throw new ConcurrentModificationException();
}
}
}
Here is the test drive for my code
// test #8 (equals) won't work if they don't have an iterator!
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.Collection;
// import lists.DoublyLinkedList;
public class GradeDLlist {
private static boolean passedAll = true;
public static void test(int num, boolean r, String actual) {
if (!r) {
passedAll = false;
System.out.println(num+": "+ "fail - incorrect result: " + actual);
}
}
////////////////////////////////////////////
public static void main(String [] args) {
List<Integer> theirs = new ArrayList<Integer>();
List<Integer> mine = new DoublyLinkedList<Integer>();
int num = 0;
try{
++num; test(num,theirs.isEmpty()==mine.isEmpty(),mine.isEmpty()+" cp #1");
} catch (Exception e) { test(num,false,e+" cp #1"); }
try{
++num; test(num,theirs.size()==mine.size(),mine.size()+" cp #1");
} catch (Exception e) { test(num,false,e+" cp #1"); }
theirs = new ArrayList<Integer>();
mine = new DoublyLinkedList<Integer>();
try{
++num;
for (int i = 50; i <= 60; i++) {
theirs.add(new Integer(i)); mine.add(new Integer(i));
}
test(num,theirs.size()==mine.size(),"size() test");
} catch (Exception e) { test(num,false,e+" cp #1"); }
// try{
// ++num; test(num,theirs.equals(null)==mine.equals(null),"l.equals(null) test");
//} catch (Exception e) { test(num,false,e+" cp #1"); }
/*
try{
++num; test(num,
new ArrayList().equals(new DoublyLinkedList<Integer>())==new DoublyLinkedList<Integer>().equals(new ArrayList()),
"equals() test");
} catch (Exception e) { test(num,false,e+""); }
*/
try{
++num;
for (int i = 0; i<=5; i++) {
Integer obj = new Integer(i*2);
theirs.add(obj); mine.add(obj);
}
test(num,theirs.isEmpty()==mine.isEmpty(),mine.isEmpty()+" cp #1");
} catch (Exception e) { test(num,false,e+" cp #2"); }
try{
++num; test(num,theirs.size()==mine.size(),mine.size()+" cp #3");
} catch (Exception e) { test(num,false,e+" cp #4"); }
boolean passed = true; int findex=-1;
try{
++num;
for (int i = 0; i<theirs.size() && passed; i++)
if (!theirs.get(i).equals(mine.get(i))) {
passed = false;
findex = i;
}
test(num,passed,"on index #"+findex);
} catch (Exception e) { test(num,false,e+" cp #5");}
try{
++num;
theirs.add(2,new Integer(-1000));
mine.add(2,new Integer(-1000));
passed = true;
for (int i = 0; i<theirs.size(); i++)
if (!theirs.get(i).equals(mine.get(i))) {
passed = false;
break;
}
test(num,passed,"add(i,object) test");
} catch (Exception e) { test(num,false,e+" cp #6"); }
++num;
try{
mine.get(3452);
passed = false;
} catch (IndexOutOfBoundsException e) {
passed = true;
} catch (Exception e) {
passed = false;
}
test(num,passed,"IndexOutOfBoundsException not thrown");
++num;
try {
mine.get(-3);
passed = false;
} catch (IndexOutOfBoundsException e) {
passed = true;
} catch (Exception e) {
passed = false;
}
test(num,passed,"IndexOutOfBoundsException not thrown");
Integer iobj = new Integer(4);
try{
++num; test(num, theirs.contains(iobj)==mine.contains(iobj), mine.contains(iobj)+" cp #7");
} catch (Exception e) { test(num,false,e+" cp #8"); }
iobj = new Integer(5);
try{
++num; test(num,theirs.contains(iobj)==mine.contains(iobj),"contains() test - "+mine.contains(iobj));
} catch (Exception e) { test(num,false,e+" cp #9"); }
try{
++num; test(num,theirs.indexOf(null)==mine.indexOf(null),mine.indexOf(null)+" cp #10");
} catch (Exception e) { test(num,false,e+" cp #11"); }
iobj = new Integer(4);
try{
++num;
theirs.add(iobj); mine.add(iobj);
test(num,theirs.indexOf(iobj)==mine.indexOf(iobj),"indexOf() test - "+mine.indexOf(iobj) );
} catch (Exception e) { test(num,false,e+" cp #12"); }
iobj = new Integer(5);
try{
++num; test(num,theirs.indexOf(iobj)==mine.indexOf(iobj),"indexOf() test - "+mine.indexOf(iobj));
} catch (Exception e) { test(num,false,e+" cp #13"); }
iobj = new Integer(0); boolean br;
try{
++num; test(num,theirs.remove(iobj)==(br=mine.remove(iobj)),br+" cp #14");
} catch (Exception e) { test(num,false,e+" cp #15"); }
passed = true; findex=-1;
try{
++num;
for (int i = 0; i<=4 && passed; i++)
if (!theirs.get(i).equals(mine.get(i))) {
passed = false; findex = i;
}
test(num,passed,"on index #"+findex);
} catch (Exception e) { test(num,false,e+" cp #16"); }
iobj = new Integer(4);
try{
++num; test(num,theirs.remove(iobj)==(br=mine.remove(iobj)),br+" cp #17");
} catch (Exception e) { test(num,false,e+" cp #18"); }
passed = true; findex=-1;
try{
++num;
for (int i = 0; i<=3 && passed; i++)
if (!theirs.get(i).equals(mine.get(i))) {
passed = false; findex = i;
}
test(num,passed,"get() test - on index #"+findex);
} catch (Exception e) { test(num,false,e+" cp #19"); }
iobj = new Integer(-98344);
try{
++num; test(num,theirs.remove(iobj)==(br=mine.remove(iobj)),br+" cp #20");
} catch (Exception e) { test(num,false,e+" cp #21"); }
passed = true; findex=-1;
try{
++num;
for (int i = 0; i<=3 && passed; i++)
if (!theirs.get(i).equals(mine.get(i))) {
passed = false; findex = i;
}
test(num,passed,"on index #"+findex);
} catch (Exception e) { test(num,false,e+" cp #22"); }
// try{
// ++num; test(num,theirs.remove(null)==(br=mine.remove(null)),br+" cp #1");
//} catch (Exception e) { test(num,false,e+" cp #1"); }
try{
++num;
Collection<Integer> c = new ArrayList<Integer>();
for (int i = 0; i < 1000; i++) c.add(i);
mine = new DoublyLinkedList<Integer>(c);
theirs = new LinkedList<Integer>(c);
System.out.println("**** mine size: "+mine.size());
System.out.println("**** theirs size "+theirs.size());
System.out.println("**** mine: "+mine.toString());
System.out.println("**** their "+theirs.toString());
test(num,mine.equals(theirs),"DoublyLinkedList(Collection) constructor test");
} catch (Exception e) { test(num,false,e+" cp #23"); }
try{
++num;
mine = new DoublyLinkedList<Integer>();
theirs = new ArrayList<Integer>();
for (int i = 0; i < 100; i++) {
mine.add(i); theirs.add(i);
}
Iterator<Integer> myItr = mine.iterator(),
theirItr = theirs.iterator();
passed = true;
while(theirItr.hasNext()) {
if(!(myItr.next().equals(theirItr.next()))) {
passed = false; break;
}
}
test(num,passed,"iterator hasNext(), next() test");
} catch (Exception e) { test(num,false,e+" cp #24"); }
try {
++num;
mine = new DoublyLinkedList<Integer>();
theirs = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
mine.add(i); theirs.add(i);
}
Iterator<Integer> myItr = mine.iterator(),
theirItr = theirs.iterator();
while(theirItr.hasNext()) {
myItr.next();
myItr.remove();
theirItr.next();
theirItr.remove();
}
test(num,mine.size()==theirs.size(),"iterator remove() test");
} catch (Exception e) { test(num,false,e+" cp #25"); }
try{
++num;
mine = new DoublyLinkedList<Integer>();
theirs = new ArrayList<Integer>();
mine.add(1); theirs.add(1);
Iterator<Integer> myItr = mine.iterator(),
theirItr = theirs.iterator();
try {
myItr.remove();
test(num,false,"iterator IllegalStateException test 1 ");
} catch(IllegalStateException e1) {
try{
theirItr.remove();
test(num,false,"iterator IllegalStateException test 2");
} catch(IllegalStateException e2) {
}
}
} catch (Exception e) { test(num,false,e+" cp #26"); }
try {
++num;
mine = new DoublyLinkedList<Integer>();
theirs = new ArrayList<Integer>();
mine.add(1); theirs.add(1);
Iterator<Integer> myItr = mine.iterator(),
theirItr = theirs.iterator();
mine.add(2); theirs.add(2);
try {
myItr.next();
test(num,false,"iterator ConcurrentModificationException test #27");
} catch(ConcurrentModificationException e1) {
try{
theirItr.next();
test(num,false,"iterator ConcurrentModificationException test #28");
} catch(ConcurrentModificationException e2) {
}
}
} catch (Exception e) { test(num,false,e+" cp #29"); }
try {
++num;
mine = new DoublyLinkedList<Integer>();
theirs = new ArrayList<Integer>();
for (int i = 1; i <= 5; i++) {
mine.add(i); theirs.add(i);
}
test(num,mine.toString().equals(theirs.toString()),"toString test");
} catch (Exception e) { test(num,false,e+" cp #30"); }
if (passedAll) System.out.println("passed all "+num+" tests");
}
}
Here is the output of my code
**** mine size: 1000 **** theirs size 1000 **** mine: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999] **** their [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999] 21: fail - incorrect result: DoublyLinkedList(Collection) constructor test 23: fail - incorrect result: iterator remove() test 24: fail - incorrect result: iterator IllegalStateException test 1 25: fail - incorrect result: iterator ConcurrentModificationException test #27
can anyone isolate and provide any insight on why I am getting those errors and how i can fix them?