java Stack(栈)类、Queue和Deque队列
1. java Stack类
特性是:LIFO(后进先出)先进后出,最先进入的在栈底。
Stack底层也是通过数组实现的,同时也是线程安全的
Stack stack=new Stack();
//添加 (插入数据到栈顶)
stack.push(10L);
//判罚是否为空
stack.empty();
System.out.println(stack.empty());
//获取栈顶元素
Object peek = stack.peek();
System.out.println(peek);
//删除(出栈)
Object pop = stack.pop();
System.out.println(pop);
//获取元素的位置
int search = stack.search(10L);
System.out.println(search);//从1开始
System.out.println(stack);
2.Queue单向队列
特性是:FIFO(先进先出) ,最先进入的在队首。插入到队尾
//LinkedList实现了Queue接口 可以使用LinkedList
Queue queue=new LinkedList();
//Queue还有个直接子类PriorityQueue 自带扩容机制、无边界
Queue priorityQueu=new PriorityQueue();
//插入到队列末尾
priorityQueu.offer(10L);
priorityQueu.offer(40L);
System.out.println(priorityQueu);
//查看队首 不删除
Object peek = priorityQueu.peek();
System.out.println(peek);
//抛出 删除队首
Object poll = priorityQueu.poll();
System.out.println(poll);
3. Deque双向队列
ArrayDeque是无初始容量的双端队列,作为队列使用 ArrayDeque作为队列时的效率比LinkedList要高。
LinkedList则是双向链表。作为栈使用
//用作栈来使用
Deque stack=new LinkedList();
stack.addFirst(12);//添加元素
System.out.println(stack.peekFirst());//获取栈顶元素
System.out.println(stack.pollFirst());//获取并移除栈顶
//队列使用
Deque dequ=new ArrayDeque();
dequ.addLast(12); //添加元素队尾
System.out.println(dequ.peekFirst());//获取队首
System.out.println(dequ.pollFirst());//获取并移除队首
Queue Deque
增加
add add、addFirst、addLast
offer offer、offerFirst、offerLast
移除
remove remove、removeFirst、removeLast
poll pop、poll、pollFirst、pollLast
获取
element element、getFirst、getLast
peek peek、peekFirst、peekLast
1、add和offer区别
add() : 添加元素,如果添加成功则返回true,如果队列是满的,则抛出异常
offer() : 添加元素,如果添加成功则返回true,如果队列是满的,则返回false
2、remove和poll
remove() : 移除队列头的元素并且返回,如果队列为空则抛出异常
poll() : 移除队列头的元素并且返回,如果队列为空则返回null
Deque新增了一个pop方法,也是移除队列头的元素并且返回,如果队列为空则抛出异常。
3、element和peek
element() :返回队列头元素但不移除,如果队列为空,则抛出异常
peek() :返回队列头元素但不移除,如果队列为空,则返回null
因此,增加推荐使用add,移除推荐使用poll,获取元素推荐使用peek。
区别:
Queue是单向队列,Deque 是double ended queue的缩写是双向队列。
Queue只能作为队列 , Deque可以作为栈也可以作为队列使用;
Queue以及Deque都是继承于Collection,Deque是Queue的子接口。
stack、Queue、Deque 作为Collection,可以使用集合的常用方法。
java Stack(栈)类、Queue和Deque队列的更多相关文章
- java集合类——Stack栈类与Queue队列
Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法.测试堆栈是否为空的 em ...
- Stack栈类与、Queue队列与线性表的区别和联系
栈和队列都属于特殊的线性表 一.定义 1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...
- 基于数组实现Java 自定义Stack栈类及应用
栈是存放对象的一种特殊容器,在插入与删除对象时,这种结构遵循后进先出( Last-in-first-out,LIFO)的原则.java本身是有自带Stack类包,为了达到学习目的已经更好深入了解sta ...
- stack栈和Queue队列
1.push将对象插入 System.Collections.Generic.Stack<T> 的顶部. Stack st = new Stack(); //栈是先进后出 st.Push( ...
- java - Stack栈和Heap堆的区别
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆. 在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储 ...
- JAVA Stack栈和Heap堆的区别(转)
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆. 在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语: ...
- Java数据类型Stack栈、Queue队列、数组队列和循环队列的比较
判断括号是否匹配:调用java本身 import java.util.Stack; public class Solution { public boolean isValid(String s){ ...
- java:stack栈: Stack 类表示后进先出(LIFO)的对象堆栈
//Stack 类表示后进先出(LIFO)的对象堆栈 //它提供了通常的 push 和 pop 操作,以及取栈顶点的 peek 方法.测试堆栈是否为空的 empty 方法.在堆栈中查找项并确定到栈顶距 ...
- java Stack(栈)
"Stack" 通常时指"后进后出"(LIFO)的容器,有时栈也被称为叠加栈,因为最后"压入"栈的元素,第一个"弹出"栈 ...
- java 数据类型:集合接口Collection之队列Queue:PriorityQueue ;Dequeue接口和ArrayDeque实现类:
什么是Queue集合: Queue用于模拟队列这种数据结构,队列通常是"先进先出"(FIFO)的容器.队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素. ...
随机推荐
- JQUERY选择器大全(转载)
在Web应用程序中,大部分的客户端操作都是基于对象的操作,要操作对象就必须先获取对象,jQuery提供了强大的选择器让我们获取对象.我人为地将jQuery选择器分为两大部分:选择对象和筛选条件.选择对 ...
- Java工程结构 应用分层
(一) 应用分层 1. [推荐]图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于 Web 层,也可以直接依赖于 Service 层,依此类推: • 开放接口层:可直接封装 Se ...
- zsh以及oh-my-zsh的安装配置
Oh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式.它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作.给我们一种全新的方式使用命令行. ...
- 在linux下创建KVM虚拟机
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所 ...
- USB 驱动框架分析
这里先说一些概念性的东西,了解一下USB 一.关于usb设备 都见过很多,用过很多了,每当我们插上一个usb设备到pc的时 右下角就会弹出一个提示信息,提示"发现xxx"设备,再接 ...
- conda Installing on Linux - 搬运
转自:Installing on Linux - conda 23.1.0 documentation Installing on Linux Download the installer: Min ...
- win10,在桌面点击右键:显示设置和个性化,出现“该文件没有与之关联的应用来执行该操作,请安装应用,若已经安装应用,请在默认应用设置页面中创建关联”
参考:https://zhidao.baidu.com/question/2076100681854702028.html 1. WIN + R 打开运行,并输入 regedit,点击确定,进入注册表 ...
- 后台运行&和nohup使用
这里首先先介绍一下 ctrl+z bg fg jobs 命令 下面为了观察效果,test1.sh脚本不停的输出hello ctrl + z ,会使一个正在运行的进程挂起(暂停)到后台,而且执行jobs ...
- 接口自动化之request几种常见请求及响应方法
request 的几种常见方法 1.request.get() 发送get请求 2.request.post() 发送post请求 3.request.delete() 发送delete请求 4.re ...
- 文件上传 upload-labs Pass-18 条件竞争
Pass-18 条件竞争 审计源码 $is_upload = false; $msg = null; if(isset($_POST['submit'])){ $ext_arr = array('jp ...