1 module LinkedListDemo; 2 3 import common; 4 5 import hunt.collection.AbstractList; 6 import hunt.collection.ArrayList; 7 import hunt.collection.LinkedList; 8 import hunt.collection.Collections; 9 import hunt.collection.List; 10 11 import std.stdio; 12 import std.conv; 13 import std.range; 14 15 // http://www.java2novice.com/java-collections-and-util/arraylist/ 16 class LinkedListDemo 17 { 18 void testBasicOperations() 19 { 20 LinkedList!(string) arrl = new LinkedList!(string)(); 21 //adding elements to the end 22 arrl.add("First"); 23 arrl.add("Second"); 24 arrl.add("Third"); 25 arrl.add("Random"); 26 writeln("Actual LinkedList:" ~ arrl.toString()); 27 28 writeln("First Element: " ~ arrl.element()); 29 writeln("First Element: " ~ arrl.getFirst()); 30 writeln("First Element: " ~ arrl.peek()); 31 writeln("First Element: " ~ arrl.peekFirst()); 32 33 writeln("Last Element: " ~ arrl.getLast()); 34 writeln("Last Element: " ~ arrl.peekLast()); 35 36 assert(arrl.size == 4); 37 assert(arrl.getLast() == "Random"); 38 39 List!(string) list = new ArrayList!(string)(); 40 list.add("one"); 41 list.add("two"); 42 arrl.addAll(list); 43 writeln("After Copy: " ~ arrl.toString()); 44 assert(arrl.size() == 6); 45 46 writeln("Adding element at last position..."); 47 arrl.addLast("I am last"); 48 writeln(arrl); 49 writeln("Adding element at last position..."); 50 arrl.offerLast("I am last - 1"); 51 writeln(arrl); 52 writeln("Adding element at last position..."); 53 arrl.offer("I am last - 2"); 54 assert(arrl.size() == 9); 55 writeln(arrl); 56 57 assert(arrl.toString() == "[First, Second, Third, Random, one, two, I am last, I am last - 1, I am last - 2]", arrl.toString()); 58 59 // writeln("Actual LinkedList:"+arrl); 60 arrl.clear(); 61 assert(arrl.size() == 0); 62 writeln("After clear LinkedList:" ~ arrl.toString()); 63 64 } 65 66 void testRemove() 67 { 68 LinkedList!(string) arrl = new LinkedList!(string)(); 69 arrl.add("First"); 70 arrl.add("Second"); 71 arrl.add("Third"); 72 arrl.add("Random"); 73 arrl.add("four"); 74 arrl.add("five"); 75 arrl.add("six"); 76 arrl.add("seven"); 77 arrl.add("eight"); 78 arrl.add("nine"); 79 writeln(arrl); 80 assert(arrl.size == 10); 81 82 writeln("\nRemov() method:" ~ arrl.remove()); 83 writeln("After remove() method call:"); 84 writeln(arrl); 85 assert(arrl.size == 9); 86 87 writeln("\nremove(index) method:" ~ arrl.removeAt(2).to!string()); 88 writeln("After remove(index) method call:"); 89 writeln(arrl); 90 assert(arrl.size == 8); 91 assert(arrl.toString() == "[Second, Third, four, five, six, seven, eight, nine]", arrl.toString()); 92 93 writeln("\nRemov(object) method:" ~ arrl.remove("six").to!string()); 94 writeln("After remove(object) method call:"); 95 writeln(arrl); 96 assert(arrl.size == 7, arrl.size().to!string()); 97 98 writeln("\nremoveFirst() method:" ~ arrl.removeFirst()); 99 writeln("After removeFirst() method call:"); 100 writeln(arrl); 101 102 writeln("\nremoveFirstOccurrence() method:" ~ arrl.removeFirstOccurrence("eight")); 103 writeln("After removeFirstOccurrence() method call:"); 104 writeln(arrl); 105 106 writeln("\nremoveLast() method:" ~ arrl.removeLast()); 107 writeln("After removeLast() method call:"); 108 writeln(arrl); 109 assert(arrl.size == 4); 110 assert(arrl.toString() == "[Third, four, five, seven]", arrl.toString()); 111 112 113 // writeln("removeLastOccurrence() method:" ~ arrl.removeLastOccurrence("five")); 114 // writeln("After removeLastOccurrence() method call:"); 115 // writeln(arrl); 116 } 117 118 void testContains() 119 { 120 LinkedList!(string) arrl = new LinkedList!(string)(); 121 //adding elements to the end 122 arrl.add("First"); 123 arrl.add("Second"); 124 arrl.add("Third"); 125 arrl.add("Random"); 126 writeln("Actual LinkedList:" ~ arrl.toString()); 127 128 List!(string) list = new LinkedList!(string)(); 129 list.add("Second"); 130 list.add("Random"); 131 writeln("Does LinkedList contains all list elements?: " ~ arrl.containsAll(list) 132 .to!string()); 133 list.add("one"); 134 writeln("Does LinkedList contains all list elements?: " ~ arrl.containsAll(list) 135 .to!string()); 136 } 137 138 void testPushPop() 139 { 140 LinkedList!(string) arrl = new LinkedList!(string)(); 141 arrl.add("First"); 142 arrl.add("Second"); 143 arrl.add("Third"); 144 arrl.add("Random"); 145 writeln(arrl); 146 arrl.push("push element"); 147 writeln("After push operation:"); 148 writeln(arrl); 149 arrl.pop(); 150 writeln("After pop operation:"); 151 writeln(arrl); 152 } 153 154 // void testSubList() 155 // { 156 // LinkedList!(string) arrl = new LinkedList!(string)(); 157 // //adding elements to the end 158 // arrl.add("First"); 159 // arrl.add("Second"); 160 // arrl.add("Third"); 161 // arrl.add("Random"); 162 // arrl.add("Click"); 163 // writeln("Actual LinkedList:" ~ arrl.toString()); 164 // List!(string) list = arrl.subList(2, 4); 165 // writeln("Sub List: " ~ list.toString()); 166 // } 167 168 // void testReverse() 169 // { 170 // LinkedList!(string) list = new LinkedList!(string)(); 171 // list.add("Java"); 172 // list.add("Cric"); 173 // list.add("Play"); 174 // list.add("Watch"); 175 // list.add("Glass"); 176 // Collections.reverse(list); 177 // writeln("Results after reverse operation:"); 178 // foreach(string str; list){ 179 // writeln(str); 180 // } 181 // } 182 183 // void testShuffle() 184 // { 185 // LinkedList!(string) list = new LinkedList!(string)(); 186 // list.add("Java"); 187 // list.add("Cric"); 188 // list.add("Play"); 189 // list.add("Watch"); 190 // list.add("Glass"); 191 // list.add("Movie"); 192 // list.add("Girl"); 193 194 // Collections.shuffle(list); 195 // writeln("Results after shuffle operation:"); 196 // foreach(string str; list){ 197 // writeln(str); 198 // } 199 200 // Collections.shuffle(list); 201 // writeln("Results after shuffle operation:"); 202 // foreach(string str; list){ 203 // writeln(str); 204 // } 205 // } 206 207 // void testSwap() 208 // { 209 // LinkedList!(string) list = new LinkedList!(string)(); 210 // list.add("Java"); 211 // list.add("Cric"); 212 // list.add("Play"); 213 // list.add("Watch"); 214 // list.add("Glass"); 215 // list.add("Movie"); 216 // list.add("Girl"); 217 218 // Collections.swap(list, 2, 5); 219 // writeln("Results after swap operation:"); 220 // foreach(string str; list){ 221 // writeln(str); 222 // } 223 // } 224 225 }