程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> LinkedList 淺析示例,linkedlist淺析示例

LinkedList 淺析示例,linkedlist淺析示例

編輯:JAVA綜合教程

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);
	}

}

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved