public class A { @Override public boolean equals(Object arg0) { return true; } } public class SameAListTest { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); //[1, 2, 3] System.out.println(list); list.remove(new A()); //[2, 3] System.out.println(list); list.remove(new A()); //[3] System.out.println(list); } }
public class ListIterators { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("123"); list.add("231"); list.add("132"); /*正向迭代 * Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }*/ /*//從指定的索引之後的元素進行迭代 Lambda迭代 ListIterator<String> listIterator = list.listIterator(1); //231 132 listIterator.forEachRemaining((e) -> System.out.println(e));*/ ListIterator<String> iterator = list.listIterator(); while (iterator.hasNext()) { String next = iterator.next(); System.out.println(next); if ("132".equals(next)) { iterator.add("新添加的"); } } System.out.println("反向迭代 +++++++++++++++++++++"); while (iterator.hasPrevious()) { System.out.println(iterator.previous()); } //[123, 231, 132, 新添加的] System.out.println(list); /* * 123 231 132 反向迭代 +++++++++++++++++++++ 新添加的 132 231 123 [123, 231, 132, 新添加的] */ } }
public class ArrayListAndVector { public static void main(String[] args) { Stack<String> vector = new Stack<>(); vector.push("1"); vector.push("2"); vector.push("3"); while (!vector.empty()) { System.out.println(vector.pop());// 3 2 1 //System.out.println(vector.peek()); 會死循環,由於棧內不會彈出因此判斷會一直執行。 } } }
public class FixedSizeLists { public static void main(String[] args) { List<String> asList = Arrays.asList(new String[]{"1","@","#","$"}); //Exception in thread "main" java.lang.UnsupportedOperationException //System.out.println(asList.add("dsdsd")); } }
public class QueueTest { public static void main(String[] args) { Queue<Integer> queue = new ArrayDeque<>(); //將指定元素加入此隊列的尾部,當使用有容量限制的隊列時,此方法一般比add方法更好。 queue.offer(44); queue.add(2); //[44, 2] System.out.println(queue); queue.add(3); //[44, 2, 3] System.out.println(queue); System.out.println(queue.poll());//44 System.out.println(queue);//[2, 3] System.out.println(queue.peek());//2 System.out.println(queue);//[2, 3] queue.remove(); System.out.println(queue);//[3] queue.add(3434); System.out.println(queue);//[3, 3434] //返回隊列頭部元素,可是不刪除該元素 System.out.println(queue.element());//3 System.out.println(queue);//[3, 3434] System.out.println(queue.remove(3434));//true System.out.println(queue);//[3] } }
public class PriorityQueues { public static void main(String[] args) { PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(); priorityQueue.add(12); priorityQueue.add(-6); priorityQueue.add(-9); priorityQueue.add(1); //[-9, 1, -6, 12] System.out.println(priorityQueue); priorityQueue.poll(); //[-6, 1, 12] System.out.println(priorityQueue); } }
public class ArryDeque { public static void main(String[] args) { Deque<Integer> deque = new ArrayDeque<>(); deque.push(1); deque.push(2); deque.push(3); deque.push(4); //[4, 3, 2, 1] System.out.println(deque); System.out.println(deque.pop()); // 4 System.out.println(deque);//[3, 2, 1] } } //後入先出
public class ArryDeque2 { public static void main(String[] args) { Deque<Integer> deque = new ArrayDeque<>(); deque.offer(1123); deque.offer(143); deque.offer(-11); System.out.println(deque);//[1123, 143, -11] System.out.println(deque.poll());//1123 System.out.println(deque);//[143, -11] System.out.println(deque.poll());//143 System.out.println(deque);//[-11] } }
public class LinkedListTest { public static void main(String[] args) { LinkedList<Integer> linkedList = new LinkedList<>(); //將數組元素加入棧頂 linkedList.push(1); //將數組元素加入棧底 linkedList.offer(2); //[1, 2] System.out.println(linkedList); //加入棧頂 linkedList.offerFirst(3); //[3, 1, 2] System.out.println(linkedList); for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i)); //3 1 2 } //訪問但不刪除棧底 System.out.println(linkedList.peekLast());//2 //[3, 1, 2] System.out.println(linkedList); //訪問但不刪除棧頂 System.out.println(linkedList.peekFirst());//3 //[3, 1, 2] System.out.println(linkedList); //訪問並刪除棧頂 System.out.println(linkedList.pollFirst());//3 //[1, 2] System.out.println(linkedList); } }
LinkedList和ArrayList和ArrayDeque實現機制徹底不一樣java
使用List集合的一些建議數組