1. 程式人生 > >Java類集框架——LinkedList子類與Queue介面

Java類集框架——LinkedList子類與Queue介面

學習目標:

掌握LinkedList與List介面的關係。 掌握Queue介面的作用。

LinkedList子類與Queue介面

LinkedList表示的是一個連結串列的操作類,此類的定義如下: public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, Cloneable, Serialzable。 Queue介面是Collection的子介面,此介面的定義如下: public interface Queue<E> extends Collection<E>

Queue介面定義的方法: 1、public E element()  普通 找到連結串列的表頭。 2、public boolean offer(E o) 普通 將指定元素增加到連結串列的表尾。 3、public E peek()  普通 找到但並不刪除連結串列的頭。 4、public E poll()   普通 找到並刪除連結串列的頭。 5、public E remove() 普通 檢索並移除表頭 注意: (1)remove()與poll() 方法都是從佇列中刪除第一個元素。remove()的行為與Collection介面的版本類似,但是新的poll()方法在用在空集合呼叫時不會丟擲異常,只是返回null。因此,新的方法更適合容易出現異常條件的情況。
(2)peek()與element() 用於在佇列的頭部查詢元素。與remove()方法類似,佇列為空時,element()丟擲一個異常,而peek()返回null。 LinkedList中操作連結串列的部分方法: 1、public void addFirst(E o) 普通 在連結串列開頭增加元素。 2、public void addLast(E o) 普通 在連結串列結尾增加元素。 3、public boolean offer()  普通 將指定元素增加到連結串列的結尾。 4、public E removeFirst()  普通 刪除連結串列的第一個元素。 5、public E removeLast()
 普通 刪除連結串列的最後一個元素。
本身大量擴充了Queue介面和List介面的操作。所以,在使用時最好直接使用LinkedList類進行操作。 為連結串列的開頭和結尾增加資料。
import java.util.LinkedList ;
public class LinkedListDemo01{
	public static void main(String args[]){
		LinkedList<String> link = new LinkedList<String>() ;
		link.add("A") ;	// 增加元素
		link.add("B") ;	// 增加元素
		link.add("C") ;	// 增加元素
		System.out.println("初始化連結串列:" + link) ;
		link.addFirst("X") ;	// 在開頭增加資料
		link.addLast("Y") ;		// 在結尾增加資料
		System.out.println("增加頭和尾之後的連結串列:" + link) ;
	}
};

對於連結串列也可以找到其表頭:
import java.util.LinkedList ;
public class LinkedListDemo02{
	public static void main(String args[]){
		LinkedList<String> link = new LinkedList<String>() ;
		link.add("A") ;	// 增加元素
		link.add("B") ;	// 增加元素
		link.add("C") ;	// 增加元素
		System.out.println("1-1、element()方法找到表頭:" + link.element()) ;
		System.out.println("1-2、找完之後的連結串列的內容:" + link) ;
		System.out.println("2-1、peek()方法找到表頭:" + link.peek()) ;
		System.out.println("2-2、找完之後的連結串列的內容:" + link) ;
		System.out.println("3-1、poll()方法找到表頭:" + link.poll()) ;
		System.out.println("3-2、找完之後的連結串列的內容:" + link) ;
		
	}
};

既然此類實現了Queue介面,那麼來說就可以按照佇列的方式進行FIFO的操作。
import java.util.LinkedList ;
public class LinkedListDemo03{
	public static void main(String args[]){
		LinkedList<String> link = new LinkedList<String>() ;
		link.add("A") ;	// 增加元素
		link.add("B") ;	// 增加元素
		link.add("C") ;	// 增加元素
		System.out.print("以FIFO的方式輸出:") ;
		for(int i=0;i<=link.size()+1;i++){ // 注意:size在出棧操作中不斷減小,所以要不斷加1
			System.out.print(link.poll() +"、") ;
		}
	}
};


總結: 1、實際上此集合中增加元素的操作都是一樣的,因為是Collection的子類。 2、各個類有各個類自己的單獨實現,只需要單獨使用即可。