Java集合框架读书笔记(三)

ArrayDeque
Java里有一个叫Stack栈的类,却没有叫Queue的类(它是一个接口的名字)。当需要使用栈时,Java已经不推荐用Stack,而是使用更加高效的ArrayDeque,如果使用队列,当然也是ArrayDeque。

Deque是双端队列,可以当做栈使用,也可以当做队列使用。
队列的相关接口:
在这里插入图片描述
与Stack栈相关的接口
在这里插入图片描述

从名字就可以看出来ArrayDeque底层通过数组实现。为了满足可以同时在数组两端插入或删除元素的需求,该数组必须是循环的。
在这里插入图片描述
head指向首端第一个有效元素,tail指向尾端第一个可以插入元素的空位。因为是循环数组,所以head不一定总等于0,tail也不一定总比head大。

addFirst方法
在这里插入图片描述
空间问题是在插入之后解决的,因为tail总是指向下一个可以插入的空位,也就意味着elements数组至少有一个空位,所以这时不用考虑空位问题。

addLast方法
addLast(E e)的作用是在Deque的尾端插入元素,也就是在tail位置插入,由于tail总是指向下一个可以插入的空位,因此只需要elements[tail] = e即可
在这里插入图片描述

pollFirst()
作用是删除并返回Deque首端元素,即时head位置处的元素,如果容器不为空,直接范围elements[head].
在这里插入图片描述

pollLast()
作用是删除并返回Deque尾端元素,也就是tail位置前面那个元素。
在这里插入图片描述

peekFirst()
作用是返回但不删除Deque首端元素,直接返回elements[head]即可。

peekLast()
作用是返回但不删除Deque队尾元素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值