java.util.Deque学习笔记:类中方法解释

概述


Deque(Double ended queue)是一种线性集合,其允许在集合两端进行数据的插入和删除操作。大多数的Deque实现没有确定的可保存元素数目,但是在本接口中,仍然提供了对容量限制型的队列的支持。本接口中提供了可以双向访问队列中元素的方法,与基本队列Queue类似,其提供的方法在执行失败时均存在两种处理形式:抛出异常或者返回一个特殊值(一般为null或者false)。其中第二中形式的插入操作是为有容量限制的Deque实现设计,而一般情况下,插入操作不会出现失败的情况。

其具体方法的处理逻辑如下所示:

-头部访问尾部访问
操作抛出异常返回特殊值抛出异常返回特殊值
插入操作addFirst(e)offerFirst(e)addLast(e)offerLast(e)
删除操作removeFirst()pollFirst()removeLast()pollLast()
访问操作getFirst()peekFirst()getLast()peekLast()

Deque接口继承自Queue接口。当一个deque被用作queue时,并且采用FIFO原则访问时,所有的元素被添加到队列的尾端,并从头部开始访问。从Queue中继承来的接口与Deque接口中方法的等价操作如下:

Queue MethodEquivalent Deque Method
add(e)addLast(e)
offer(e)offerLast(e)
remove()removeFirst()
poll()pollFirst()
element()getFirst()
peek()peekFirst()

Deque也可以用做栈(Stack),且一般情况下,建议使用Deque来模拟栈的操作。当Deque以栈的形式存在时,元素的插入的弹出操作均在队列的头部进行。栈中的方法与Deque方法的等价关系如下表:

Stack MethodEquivalent Deque Method
add(e)addFirst(e)
pop()removeFirst()
peek()peekFirst()

这个接口中还提供了两个删除队列内部元素的方法:removeFirstOccurrence和removeLastOccurrence。与java.util.List接口不同,这个接口并不提供根据索引访问元素的方法(随机访问)。虽然Deque接口中并不强制要求不能插入null元素,但是在实现本接口时,强烈建议实现类似机制。并且对于Deque接口的使用者来说,也不建议使用可以插入null元素的特性来完成某些操作。因为null被用作某些方法的特殊返回值来表示队列为空。与Queue接口类似,Deque接口仍然没有重写equals和hashCode方法。

方法介绍


void addFirst(E e);
  
  
  • 1

将元素插入到队列的头部。当队列没有可用容量时,则抛出IllegalStateException异常。在实用过程中,建议使用offerFirst方法。

void addLast(E e);
  
  
  • 1

将元素插入到队列的尾部,与add方法等价。当队列没有可用容量时,则抛出IllegalStateException异常。在实用过程中,建议使用offerLast方法。

boolean offerFirst(E e)
  
  
  • 1

将元素插入队列的头部。其与addFirst(e)的区别仅有一点,即:当队列中没有可用容量时候,addFirst将抛出IllegalStateException异常,而offerFirst则是返回false。

boolean offerLast(E e);
  
  
  • 1

将元素插入到队列的尾部。其与addLast(e)的区别仅有一点,即:当队列中没有可用容量时候,addLast将抛出IllegalStateException异常,而offerLast则是返回false。

E removeFirst();
  
  
  • 1

删除队列头部元素,并将其返回。当队列为空时,则抛出NoSuchElementException异常.

E removeLast();
  
  
  • 1

删除队列尾部元素,并将其返回。当队列为空时,抛出NoSuchElementException异常.

E pollFirst();
  
  
  • 1

删除队列头部元素,并将其返回。当队列为空时,返回null。

E pollLast();
  
  
  • 1

删除队列尾部元素,并将其返回。当队列为空时,返回null。

E getFirst();
  
  
  • 1

返回列表头部的元素,当列表为空时,抛出NoSuchElementException异常。

E getLast();
  
  
  • 1

返回列表尾部的元素,当列表为空时,抛出NoSuchElementException异常。

E peekFirst();
  
  
  • 1

返回列表头部的元素,当列表为空时,返回null。

E peekLast();
  
  
  • 1

返回列表尾部的元素,当列表为空时,返回null。

boolean removeFirstOccurrence(Object o);
  
  
  • 1

从队列中删除第一个与o相等的元素。当队列中不包含本元素时,则维持不变。即:删除第一个满足条件(o==null ? e==null : o.equals(e))的元素。当队列中包含本元素时,返回true,否则返回false。

boolean removeLastOccurrence(Object o);
  
  
  • 1

从队列中删除最后一个与o相等的元素。当队列中不包含本元素时,则维持不变。即:删除最后一个满足条件(o==null ? e==null : o.equals(e))的元素。当队列中包含本元素时,返回true,否则返回false。

void push(E e);
  
  
  • 1

将元素e插入到由双向队列描述的栈中,即:将元素插入到列表的头部。当列表中没有空余容量时,则抛出IllegalStateException方法。这个方法与双向队列的addFirst(e)等价。

E pop();
  
  
  • 1

从由双向队列描述的栈中弹出一个元素,即:返回双向队列中的头部元素,并将其从队列中删除。当队列中没有元素时,抛出NoSuchElementException异常,与removeFirst()等价。

boolean remove(Object o);
  
  
  • 1

删除队列中第一个与o相等的元素。如果当前队列不包含此元素时,则队列保持不变。即:删除队列中第一个满足(o==null ? e==null : o.equals(e))的元素。如果队列包含此元素,则返回true,否则返回false。此方法与removeFirstOccurrence相同。

boolean contains(Object o);
  
  
  • 1

当队列中包含元素o时,返回true,否则返回false。即:队列中至少又一个元素满足条件(o==null ? e==null : o.equals(e))时,则返回true,否则返回false。

public int size();
  
  
  • 1

返回队列中元素的个数。

Iterator<E> iterator();
  
  
  • 1

返回基于队列元素的迭代器。迭代器将从头至尾遍历队列中的元素。

Iterator<E> descendingIterator();
  
  
  • 1

返回基于列表元素的逆向迭代器。即:由队列尾到队列头返回队列中的元素。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值