前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >集合中篇—栈与队列

集合中篇—栈与队列

作者头像
晚上没宵夜
发布2020-03-10 09:26:35
3720
发布2020-03-10 09:26:35
举报
文章被收录于专栏:Howl同学的学习笔记

1. 准备

Java的集合实现了栈与队列,我们直接调用就可以实现功能,可是平时就见过Queue、Stack、Deque这些字眼,完全不知道怎么回事,下面就来梳理一下他们的关系,先来看类图(这里简化并只关联了所需要提到的类或接)

  • Stack类(栈),继承了Vector线程安全类,现在不推荐使用,推荐ArrayDeque
  • Queue接口(队列),有Collection方法,而且也新增了自己的方法
  • Deque接口(双向队列),继承了Queue,因为是双向队列,所以可以实现队列和栈的操作
  • 我们之前学过的LinkedList以及ArrayDeque实现Deque接口,即可以作为队列和栈使用

2. Queue

Queue接口不同之处在于同一个功能他有两套方法,两套方法区别于一套是实现返回值,另一套是抛出异常

Throw Exception

Return value

增加

add(e)

offer(e)

删除

remove()

poll()

检查

element()

peek()

后面讲解基于抛出异常的方法

3. Deque

double ended queue,意思是双向队列,所以该接口多了操作方法,用于操作头尾,下面讲解部分方法,其余自行查看

方法

解释

addFirst(E e)

队头增加元素

addLast(E e)

队尾增加元素

removeFirst()

队头删除元素,并返回该元素

removeLast()

队尾删除元素,并返回该元素

peekFirst()

返回队头元素,不删除

peekLast()

返回队尾元素,不删除

4. LinkedList

  • 之前我们就学过LinkedList了,底层是双向链表,想不到还支持栈和队列,而且有了头尾操作,实现栈和队列就简单了,我们比较熟悉他,所以栈和队列就基于LinkedList来讲解
  • 栈和队列用头尾操作实现稍微想一下就会理解的,后面列出表格对照
4.1 栈

先进后出的结构,想象成羽毛球筒就行了,先放进去的羽毛球都是最后才能拿出来的

具体实现

代码语言:javascript
复制
public static void main(String[] args) {
    
    LinkedList linkedList = new LinkedList(); 
    
    linkedList.addFirst(1);
    linkedList.addFirst(2);
    linkedList.addFirst(3);
    linkedList.addFirst(4);
    
    linkedList.removeFirst();
    
    //一定要用foreach方法,上篇有解释
    for(Object i : linkedList){
        System.out.println(i);
    }
}
代码语言:javascript
复制
3
2
1
4.2 队列
代码语言:javascript
复制
public static void main(String[] args) {
    
    LinkedList linkedList = new LinkedList(); 

    linkedList.addLast(1);
    linkedList.addLast(2);
    linkedList.addLast(3);
    linkedList.addLast(4);

    linkedList.removeFirst();

    //一定要用foreach方法,上篇有解释
    for(Object i : linkedList){
        System.out.println(i);
    }
}
代码语言:javascript
复制
2
3
4
4.3 对照表

功能

方法

进栈

addFirst(e)

出栈

remoceFirst()

取栈顶

peekFirst()

队列

功能

方法

进队

addLast(e)

出队

removeFirst()

取队首

peekFirst()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 准备
  • 2. Queue
  • 3. Deque
  • 4. LinkedList
    • 4.1 栈
      • 4.2 队列
        • 4.3 对照表
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档