Queue接口分析:add和offer區別,remove和poll方法到底啥區別


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM