List<T> list = new LinkedList<>();
Queue<String> queue = new LinkedList<String>();
queue.offer("a");
queue.offer("b");
offer,add 區別:
一些隊列有大小限制,因此如果想在一個滿的隊列中加入一個新項,多出的項就會被拒絕。
這時新的 offer 方法就可以起作用了。它不是對調用 add() 方法拋出一個 unchecked 異常,而只是得到由 offer() 返回的 false。
poll,remove 區別:
remove() 和 poll() 方法都是從隊列中刪除第一個元素。remove() 的行為與 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合調用時不是拋出異常,只是返回 null。因此新的方法更適合容易出現異常條件的情況。
peek,element區別:
element() 和 peek() 用於在隊列的頭部查詢元素。與 remove() 方法類似,在隊列為空時, element() 拋出一個異常,而 peek() 返回 null。
import java.util.LinkedList; import org.junit.Test; public class QueueTest { //使用集合定義一個隊列 class Queue<T> { // List<T> list = new ArrayList<>(); LinkedList<T> list = new LinkedList<>(); int size = 0; //下標 //入隊 public void in(T n){ //添加元素 //list.add(n);
list.offfer(n); size++; } //出隊 public T out(){ if(!list.isEmpty()){ size--; return list.remove(0); // return list.removeFirst(); } return null; } } @Test public void testQueue() throws Exception { Queue<Integer> queue = new Queue<Integer>(); queue.in(1); queue.in(2); queue.in(3); queue.in(4); LinkedList<Integer> linkedList = queue.list; while(queue.size>0) { Integer out = queue.out(); System.err.println(out); } } }