Queue接口:
public interface Queue<E> extends Collection<E> { /* * add方法,在不違背隊列的容量限制的情況,往隊列中添加一個元素, 如果添加成功則返回true, 如果因為容量 * 限制添加失敗了,則拋出IllegalStateException異常 * * 在有容量限制的隊列中,最好使用offer方法 * 另外,add方法相對與offer方法而言,有一個專門拋出的異常IllegalStateException,代表由於容量限制, * 導致不能添加元素的異常,接口中可能看不出,等看具體實現就明白了 */ boolean add(E e); /* * * offer方法在不違背容量限制的情況,往隊列中添加一個元素,如果添加元素成功,返回true, * 如果因為空間限制,無法添加元素則,返回false; * * 在有容量限制的隊列中,這個offer方法優於add方法,結合上文中add的注釋,可知, * 在容量限制的隊列中, add方法通過拋異常的方式表示容量已滿,offer方法通過返回 * false的方式表示容量已滿,拋異常處理更加耗時,offer直接返回false的方式更好 * */** boolean offer(E e); /* * 刪除隊列頭的元素,這個方法和poll方法的不同之處在於,這個方法在隊列為 * 空的時候選擇拋異常 * */ E remove(); /* * poll方法也是刪除隊列頭的遠,如果隊列為空的化,返回null * */ E poll(); /* * 返回隊列頭元素,這個方法和peek方法的區別在於,入股隊列為空,將拋異常 * */ E element(); /* * 返回隊列頭元素,如果隊列為空,將返回空 * */ E peek(); }
總結
1. queue的增加元素方法add和offer的區別在於,add方法在隊列滿的情況下將選擇拋異常的方法來表示隊列已經滿了,而offer方法通過返回false表示隊列已經滿了;在有限隊列的情況,使用offer方法優於add方法;
2. remove方法和poll方法都是刪除隊列的頭元素,remove方法在隊列為空的情況下將拋異常,而poll方法將返回null;
3. element和peek方法都是返回隊列的頭元素,但是不刪除頭元素,區別在與element方法在隊列為空的情況下,將拋異常,而peek方法將返回null
