LinkedList 淺析樣本,linkedlist淺析樣本
package com.smbea.demo;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.ListIterator;/** * 1、繼承自介面 List、Deque、Cloneable、Serializable; * 2、實現自類 AbstractSequentialList; * 3、由於繼承自抽象類別 AbstractSequentialList,故此元素是有順序的; * 4、增刪操作由於要移動元素,故此增刪比較慢; * 5、查詢操作由於採用的是索引,故此查詢比較快; * 6、非安全執行緒的-輕量級; * 7、由於實現了介面 Deque,故此不僅可以從前往後查詢元素,也可以從後向前查詢元素; * 8、由於實現了介面 Cloneable,故可以複製 LinkedList; * 9、由於實現了介面 Serializable,故可以被序列化 * @author hapday */public class LinkedListDemo {public static void main(String[] args) {elementRepeatableTest();elementSequentialTest();}/** * 驗證【元素可重複】 */public static void elementRepeatableTest() {List<String> chineseList = new LinkedList<String> ();chineseList.add("甲");chineseList.add("乙");chineseList.add("乙");chineseList.add("丙");chineseList.add("丁");List<String> englishList = new LinkedList<String> ();englishList.add("A");englishList.add("B");englishList.add("B");englishList.add("C");englishList.add("D");ListIterator<String> chineseIterator = chineseList.listIterator();// 支援逆序迭代Iterator<String> englishIterator = englishList.iterator();// 只支援順序迭代System.out.println("*** 順序輸出 ***");while(chineseIterator.hasNext()){System.out.print(chineseIterator.next() + " - ");}System.out.println("\n*** 逆序輸出 ***");while(chineseIterator.hasPrevious()) {System.out.print(chineseIterator.previous() + " - ");}System.out.println("\n*** chineseList 間隔插入 englishList 中的元素 ***");while(englishIterator.hasNext()){if(chineseIterator.hasNext()){chineseIterator.next();}chineseIterator.add(englishIterator.next()); // chineseList 間隔插入 englishList 中的元素}System.out.println(chineseList);englishIterator = englishList.iterator();System.out.println("\n*** englishList 每隔兩個元素刪除前一個元素 ***");while(englishIterator.hasNext()){englishIterator.next();if(englishIterator.hasNext()){englishIterator.next();englishIterator.remove();// remove() 方法和 next() 是成對出現的,並且每次刪除的都是 next() 的前一個元素}}System.out.println(englishList);System.out.println("\n*** 從 chineseList 中移除 englishList 的元素 ***");chineseList.removeAll(englishList);System.out.println(chineseList);}/** * 【元素有順序】 */public static void elementSequentialTest() {List<Integer> list = new LinkedList<Integer> ();for(int index = 1; index <= 100000; index++){list.add(index);// 加入 10 萬的元素}boolean exists = true;// 是否存在:true-存在;false-不存在int current = 0;// 當前元素int previous = 0;// 上一個元素Iterator<Integer> iterator = list.iterator();while(iterator.hasNext()){current = iterator.next();if(current < previous){exists = false;}previous = current;}System.out.println("\n*** 元素有順序 ***");System.out.print("是否有順序:" + exists);}}