1.提供一組棧的介面,其底層關聯到一個LinkedList(雙端佇列)例項。由於只暴露部分基於棧實現的介面,所以可以提供安全的棧實現。
import java.util.LinkedList;

public class Stack<T> {

    
private LinkedList<T> storage = new LinkedList<T>();


    
 /** 入棧 */

    
public void push(T v) {

       storage.addFirst(v);

    }


    
 /** 出棧,但不刪除 */

    
public T peek() {

       
return storage.getFirst();

    }


    
 /** 出棧 */

    
public T pop() {

       
return storage.removeFirst();

    }


    
 /** 棧是否為空 */

    
public boolean empty() {

       
return storage.isEmpty();

    }


    
 /** 列印棧元素 */

    
public String toString() {

       
return storage.toString();

    }

}



2.使用java.util.Queue介面,其底層關聯到一個LinkedList(雙端佇列)例項。由於只暴露部分基於佇列實現的介面,所以可以提供安全的佇列實現。

import java.util.LinkedList;
import java.util.Queue;

public class MyQueue<T> {

    
private Queue<T> storage = new LinkedList<T>();


    
/** 將指定的元素插入隊尾 */

    
public void offer(T v) {

        storage.offer(v);

    }


    
/** 檢索,但是不移除佇列的頭,如果此佇列為空,則返回 null */

    
public T peek() {

        
return storage.peek();

    }


    
/** 檢索,但是不移除此佇列的頭 */

    
/** 此方法與 peek 方法的惟一不同是,如果此佇列為空,它會丟擲一個異常 */

    
public T element() {

        
return storage.element();

    }


    
/** 檢索並移除此佇列的頭,如果佇列為空,則返回 null */

    
public T poll() {

        
return storage.poll();

    }


    
/** 檢索並移除此佇列的頭 */

    
/** 此方法與 poll 方法的不同在於,如果此佇列為空,它會丟擲一個異常 */

    
public T remove() {

        
return storage.remove();

    }


    
/** 佇列是否為空 */

    
public boolean empty() {

        
return storage.isEmpty();

    }


    
/** 列印佇列元素 */

    
public String toString() {

        
return storage.toString();

    }

}
本文轉自zhangjunhd51CTO部落格,原文連結:http://blog.51cto.com/zhangjunhd/69912,如需轉載請自行聯絡原作者