• Queue 中 add() 和 offer() 都是用来向队列添加一个元素。
    • 在容量已满的情况下,add() 方法会抛出 IllegalStateException 异常,offer() 方法只会返回 false 。

    JDK1.8 源码中的解释

    Queue的add()和offer()方法有什么区别? - ConstXiong - 博客园 - 图1

    /_*

    • Inserts the specified element into this queue if it is possible to do so
    • immediately without violating capacity restrictions, returning
    • {@code true} upon success and throwing an {@code IllegalStateException}
    • if no space is currently available.
      *
    • @param e the element to add
    • @return {@code true} (as specified by {@link Collection#add})
    • @throws IllegalStateException if the element cannot be added at this
    • time due to capacity restrictions
    • @throws ClassCastException if the class of the specified element
    • prevents it from being added to this queue
    • @throws NullPointerException if the specified element is null and
    • this queue does not permit null elements
    • @throws IllegalArgumentException if some property of this element
    • prevents it from being added to this queue / boolean add(E e); /*
    • Inserts the specified element into this queue if it is possible to do
    • so immediately without violating capacity restrictions.
    • When using a capacity-restricted queue, this method is generally
    • preferable to {@link #add}, which can fail to insert an element only
    • by throwing an exception.
      *
    • @param e the element to add
    • @return {@code true} if the element was added to this queue, else
    • {@code false}
    • @throws ClassCastException if the class of the specified element
    • prevents it from being added to this queue
    • @throws NullPointerException if the specified element is null and
    • this queue does not permit null elements
    • @throws IllegalArgumentException if some property of this element
    • prevents it from being added to this queue _/ boolean offer(E e);

    Queue的add()和offer()方法有什么区别? - ConstXiong - 博客园 - 图2

    来一道刷了进 BAT 的面试题?


    https://www.cnblogs.com/ConstXiong/p/11896127.html