Java中栈、链表、队列的接口实现与选择

Deque

Deque接口既可以用作先进后出的栈,也可以用作先进先出的队列。

Java Doc里建议用Deque替代Stack接口完成栈的功能,所以我们不再使用Stack类实现,
JavaDoc for Deque中它这样说:
双端队列也可以用作LIFO(后进先出)堆栈。此接口应优先于旧版Stack类使用。当双端队列用作堆栈时,元素从双端队列的开头被压入并弹出。

ArrayDeque
实现:通过Deque接口实现

Deque<Integer> stack = new ArrayDeque<>();

常用方法

  • 入栈
    push()
  • 出栈
    pop()
  • 返回栈顶
    peek()
  • 返回栈的大小
    size()
  • 判断栈空
    isEmpty()

队列【双端队列】

ArrayDeque
实现:和栈相同,虽然方法一样,比如push()和add()虽然都是添加元素,但效果截然不同,一个是添加到栈顶,一个是添加到队尾。注意自己要使用的数据结构需要的操作方法。

Deque<Integer> queue = new ArrayDeque<>();

常用方法

  • 插入
    addfirst和offerFirst在队头插入元素,addLast和offerLast在队尾插入元素。 如果队列的大小是限定的, 推荐优先使用offerFirst和offerLast, 因为addfirst和addLast会在队列满的时候抛出异常。

  • 删除
    removeFirst和pollFirst 从队头移除元素,removeLast和pollLast从队尾移除元素。如果队列是空,pollFirst和pollLast 会返回空, 但是removeFirst和removeLast会抛出异常。

  • 获取
    getFirst 和 peekFirst 方法获取队列的第一个元素。这些方法不会移除队列中的元素。相应的getLast 和peekLast获取队列中最后一个元素。当队列是空的时候, peekFirst和peekLast返回空,但是getFirst 和 getLast会抛出异常。

  • 返回栈的大小
    size()

  • 判断队列空
    isEmpty()

链表

  • ArrayList 适合需要大量查改的操作
  • LinkedList 适合需要大量增删的操作
    实现:
List<Integer> list = new ArrayList<>();
List<Integer> list2 = new LinkedList<>();

常用方法

  • add() 添加元素

  • set() 修改方法

  • size() 方法

  • addAll(Collection<> c) 将另一个Collection集合的元素全部添加进来

  • remove(int index) 删除下标为index 的元素

  • indexOf(Object o) 返回元素 o 的下标

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让线程再跑一会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值