ArrayDeque中addfirst和offerFirst方法之间的差异

use*_*686 9 java arraydeque

已经尝试过一个示例程序来理解Java 6 之间的区别addFirstofferFirst方法ArrayDeque.但是它们看起来是一样的,有什么建议吗?

public void interfaceDequetest()
{
        try{
        ArrayDeque<String> ad = new ArrayDeque<String>();
        ad.addFirst("a1");
        ad.offerFirst("o1");
        ad.addFirst("a2");
        ad.offerFirst("02");
        ad.addFirst("a3");

        System.out.println("in finally block");

        for (String number : ad){
            System.out.println("Number = " + number);
        }
}
Run Code Online (Sandbox Code Playgroud)

fge*_*fge 12

不同之处在于,由于队列容量限制,添加失败时会发生以下情况:

  • .addFirst() 抛出(未经检查的)异常,
  • .offerFirst()回报false.

这是记录在Deque其中的,它ArrayDeque实现了.

值得注意的是,ArrayDeque它没有容量限制,所以基本上.addFirst()永远不会抛出异常(并且.offerFirst()总会返回true); 例如,这LinkedBlockingQueue与初始容量构建不同.