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();
}
}
本文出自 “子 孑” 博客,請務必保留此出處http://zhangjunhd.blog.51cto.com/113473/69912