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?