Java類集框架——LinkedList子類與Queue介面
阿新 • • 發佈:2019-01-30
學習目標:
掌握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。因此,新的方法更適合容易出現異常條件的情況。
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、各個類有各個類自己的單獨實現,只需要單獨使用即可。