public static void main(String[] args) {
    DoublyLinkedList<Number> doublyLinkedList = new DoublyLinkedList<>();
    for (int i = 0; i < 1000000; i++) {
      doublyLinkedList.add(i);
    }
    LinkedList<Number> numbers = new LinkedList<>();
    for (int i = 0; i < 1000000; i++) {
      numbers.add(i);
    }

    Timer timer = new Timer();
    System.out.println("Addition/remove to/from the beggining test");
    System.out.println("==============================");
    timer.start();
    doublyLinkedList.add(0, 45);
    System.out.println("DoublyLinkedList.add(e): " + timer.getElapsedTime());
    timer.start();
    numbers.add(0, 45);
    System.out.println("LinkedList.add(e): " + timer.getElapsedTime());
    System.out.println("------------");
    timer.start();
    doublyLinkedList.remove(0);
    System.out.println("DoublyLinkedList.remove(e): " + timer.getElapsedTime());
    timer.start();
    numbers.remove(0);
    System.out.println("LinkedList.remove(e): " + timer.getElapsedTime());
    System.out.println("==============================");
    System.out.println("Addition/remove to/from the middle test");
    System.out.println("==============================");
    timer.start();
    doublyLinkedList.add(500000, 45);
    System.out.println("DoublyLinkedList.add(e): " + timer.getElapsedTime());
    timer.start();
    numbers.add(500000, 45);
    System.out.println("LinkedList.add(e): " + timer.getElapsedTime());
    System.out.println("------------");
    timer.start();
    doublyLinkedList.remove(500000);
    System.out.println("DoublyLinkedList.remove(e): " + timer.getElapsedTime());
    timer.start();
    numbers.remove(500000);
    System.out.println("LinkedList.remove(e): " + timer.getElapsedTime());
    System.out.println("==============================");
    System.out.println("Addition/remove to/from the end test");
    System.out.println("==============================");
    timer.start();
    doublyLinkedList.add(doublyLinkedList.size() - 1, 222);
    System.out.println("DoublyLinkedList.add(e): " + timer.getElapsedTime());
    timer.start();
    numbers.add(numbers.size() - 1, 222);
    System.out.println("LinkedList.add(e): " + timer.getElapsedTime());
    System.out.println("------------");
    timer.start();
    doublyLinkedList.remove(doublyLinkedList.size() - 1);
    System.out.println("DoublyLinkedList.remove(e): " + timer.getElapsedTime());
    timer.start();
    numbers.remove(numbers.size() - 1);
    System.out.println("LinkedList.remove(e): " + timer.getElapsedTime());
  }
 /** To test if able to get size of the list */
 @Test
 public void testSize() {
   // the size of "testString" is 10 letters, i.e. 10 nodes
   assertEquals(10, filledTest.size());
   // the size of twoTest is 2
   assertEquals(2, twoTest.size());
   // the size of oneTest is 1
   assertEquals(1, oneTest.size());
   // the size of the emptyTest is zero
   assertEquals(0, emptyTest.size());
 }
Esempio n. 3
0
  public static void main(String[] args) {
    DoublyLinkedList<Integer, String> list = new DoublyLinkedList<Integer, String>();

    list.add(5, "James");

    System.out.println(list.size());

    System.out.println(list.get(5));

    list.add(5, "Thomas");

    System.out.println(list.size());

    System.out.println(list.get(5));
  }
 public void testBasicBuildAndGet() {
   for (int size = 0; size < 15; ++size) {
     final DoublyLinkedList<Integer> list = new DoublyLinkedList<Integer>();
     DoublyLinkedList.LinkNode<Integer> prevLinkNode = null;
     for (int i = 0; i < size; ++i) {
       final DoublyLinkedList.LinkNode<Integer> linkNode = list.add(i);
       assertEquals(i, linkNode.getIndex());
       assertEquals("i=" + i, (Integer) i, linkNode.getElt());
       assertEquals(prevLinkNode, linkNode.getPrev());
       assertNull(linkNode.getNext());
       assertEquals(i + 1, list.size());
       prevLinkNode = linkNode;
     }
     assertEquals("size=" + size, size, list.size());
     for (int i = 0; i < size; ++i) {
       assertEquals("i=" + i, (Integer) i, list.get(i));
     }
   }
 }
  public void testInsertAndRemove() {
    final DoublyLinkedList<Integer> list = new DoublyLinkedList<Integer>();

    // 2 5 8
    // 1* b2 5 8
    // 1 2a *3 5 8
    // 1 2 3 4* b5 8
    // 1 2 3 4 5 7* b8
    // 1 2 3 4 5 6* b7 8
    // 1 2 3 4 5 6 7 8a *9
    // 1 2 3 4 5 6 7 8 9a *10
    // 0* b1 2 3 4 5 6 7 8 9 10

    list.add(2).add(5).add(8);

    final DoublyLinkedList.LinkNode<Integer> node2 = list.find(2);
    node2.push(1);
    final DoublyLinkedList.LinkNode<Integer> node3 = node2.add(3);
    node3.getNext().push(4).find(8).add(9);
    list.add(10);
    list.getFirst().push(0);
    list.find(8).push(7).push(6);

    list.getLast().add(12);
    list.add(11, 11);
    list.add(13, 13);

    assertEquals(14, list.size());
    for (int i = 0; i <= 13; ++i) {
      assertEquals("i=" + i, (Integer) i, list.get(i));

      final DoublyLinkedList.LinkNode<Integer> node = list.getLinkNode(i);
      assertEquals(i, node.getIndex());
      assertEquals((Integer) i, node.getElt());
    }

    // test findNext
    final DoublyLinkedList.LinkNode<Integer> secondNode2 = list.add(2);
    final DoublyLinkedList.LinkNode<Integer> foundSecondNode2 = node2.findNext();
    assertEquals(secondNode2, foundSecondNode2);
    assertNull(secondNode2.findNext());
    secondNode2.add(3); // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2 3
    assertNull(secondNode2.findNext());

    // test remove
    assertEquals(16, list.size());
    assertEquals((Integer) 2, list.remove(14));
    assertEquals(15, list.size());
    assertEquals((Integer) 3, list.remove(14));

    assertEquals(14, list.size());
    for (int i = 0; i <= 13; ++i) {
      assertEquals("i=" + i, (Integer) i, list.get(i));

      final DoublyLinkedList.LinkNode<Integer> node = list.getLinkNode(i);
      assertEquals(i, node.getIndex());
      assertEquals((Integer) i, node.getElt());
    }

    // completely drain the list
    for (int i = 0; i < 14; ++i) {
      assertEquals("i=" + i, (Integer) i, list.remove(0));
      assertEquals(13 - i, list.size());
    }
  }