你的位置:首页 > Java教程

[Java教程]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);	}	/**	 * 【元素有顺序】	 */	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);	}}