linkin大话数据结构--Queue
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必按顺序存储,所以插入和删除速度超快。
关于这种队列的数据结构,记住4个字就好:先进先出。
Queue接口继承Collection接口,模拟队列:先进先出(FIFO)。
void add(Object e):将e插入到队列尾部;
Object element():获取队列头部的元素;
boolean offer(Object e):将e插入到队列的尾部,当使用有容量限制的队列时,此方法比add(Object e)方法更好。
Object peek():获取队列头部的元素。如果此双端队列为空,则返回 null。
Object poll():获取并删除队列头部的元素。如果此双端队列为空,则返回 null。
Object remove():获取并删除队列头部的元素。
- PriorityQueue
PriorityQueue是一个比较标准的队列实现类,注意了:这个东西保存队列元素的顺序并不是按照加入队列的顺序,而是按照队列元素的大小重新进行排序。我从来没有用过,所以这里不整理了。用一块代码演示下好了:
import java.util.PriorityQueue; public class Linkin
{
public static void main(String[] args)
{
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
pq.offer(1);
pq.offer(-3);
pq.offer(2);
pq.offer(0);
//pq.offer(null); java.lang.NullPointerException 不能插入空值
System.out.println(pq);//[-3, 0, 2, 1] 顺序莫名其妙的变了,神经病
System.out.println(pq.poll());//-3
} }
- LinkedList 同时实现了2个接口:List Deque。它可以被当成双端队列来使用,自然也可以当成栈。
LinkedList实现了Deque接口,而Deque是Queue的子接口。ArrayDeque是Deque一个典型的实现类,他是一个基于数组实现的双端队列。
Deque自定义方法:
void addFirst(Object e):把元素插入到该双向队列的开头;
void addLast(Object e):把该元素插入到该双向队列的末尾。
Object getFirst():获取但不删除队列第一个元素;
Object getLast():获取但不删除队列最后一个元素;
boolean offerFirst(Object e):将指定的元素插入到该双向队列的开头;
boolean offerLast(Object e):将指定元素插入到双向队列的末尾;
Object removeFirst():删除第一个元素
Object removeLast():删除最后一个元素
LinkedList
Object peekFirst():获取但不删除队列第一个元素,如队列为null,返回null;
Object peekLast():获取但不删除队列最后一个元素,如队列为null,返回null;
Object pollFirst():获取并删除队列第一个元素,如队列为null,返回null;
Object pollLast():获取并删除队列最后一个元素,如队列为null,返回null;
Object pop():从此双端队列所表示的堆栈中弹出一个元素。
void push(Object e):将e推入进该队列栈中。
Object removeFirst():获取并删除队列第一个元素。
Object removeFirstOccurrence(Object o):删除队列第一次出现的o元素;
removeLast():获取并删除队列最后一个元素;
removeLastOccurrence(Object o):删除队列中最后一次出现的o元素;
import java.util.LinkedList; public class Linkin
{
public static void main(String[] args)
{
LinkedList<String> names = new LinkedList<String>();
//将字符串元素加入到队列的尾部
names.offer("LinkinPark...");
//将一个字符串元素加入栈的顶部
names.push("Binger...");
//将字符串元素添加到队列的头部
names.offerFirst("huhu...");
for (String string : names)
{
System.out.println(string);
}
//访问但不删除栈顶的元素
System.out.println(names.peekFirst());
//访问但不删除队列的最后一个元素
System.out.println(names.peekLast());
//将栈顶的元素弹出栈
System.out.println(names.poll());
//下面的输入已经将队列中的第一个元素给删除了
System.out.println(names);
//访问并删除队列的最后一个元素
System.out.println(names.pollLast());
System.out.println(names);
} }
- 各种线性表性能分析
linkin大话数据结构--Queue的更多相关文章
- linkin大话数据结构--Collection和Iterator
linkin大话数据结构--Collection和Iterator Java 集合就像一种容器,可以把多个对象的引用放入容器中.Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系 ...
- linkin大话数据结构--Google commons工具类
package tz.web.dao.bean; import java.util.Arrays; import java.util.Collection; import java.util.List ...
- linkin大话数据结构--List
List:Collection子接口 List是有序的集合,集合中每个元素都有对应的顺序序列.List集合可使用重复元素,可以通过索引来访问指定位置的集合元素(顺序索引从0开始),List集合默认按元 ...
- linkin大话数据结构--泛型
泛型(Generic) 什么是泛型? java5开始出现的一种对Java语言类型的一种拓展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数类型时指定的类型占位符,就好比方法的形式参数 ...
- linkin大话数据结构--字符串,数组,list之间的互转
在实际开发中,我们经常会用到字符串,字符数组,字符list,当然也会不可避免的进行这3者之间的互相转换. 在使用到Apache和Google下的common包,可以这样子实现: package tz. ...
- linkin大话数据结构--apache commons工具类
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动. 一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆ge ...
- linkin大话数据结构--数组
数组概述:如何正确理解数组?数组也是一种类型 数组是多个相同类型数据的组合,实现对这些数据的统一管理.数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元 ...
- linkin大话数据结构--Collections类
操作集合的工具类:Collections Collections 是一个操作 Set.List 和 Map 等集合的工具类.Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作 ...
- linkin大话数据结构--Map
Map 映射关系,也有人称为字典,Map集合里存在两组值,一组是key,一组是value.Map里的key不允许重复.通过key总能找到唯一的value与之对应.Map里的key集存储方式和对应的Se ...
随机推荐
- 【二分图裸题】poj1325机器调度
题目大意:有两个机器A和B,A机器有n个模式,B机器有m个模式,两个机器最初在0模式 然后有k个作业,每个作业有三个参数i,a,b i代表作业编号,a和b代表第i作业要么在A机器的a模式下完成[或者] ...
- oracle之 SYSAUX表空间维护
1.查询表空间使用率SQL> set linesize 400SQL> set pagesize 400SQL> SELECT D.TABLESPACE_NAME 表空间名称,SPA ...
- Chris Richardson微服务翻译:微服务部署
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署( ...
- MATLAB数字图像处理学习笔记
我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇
优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...
- http常见状态码含义
200:请求成功 301:请求的资源已永久移动到新位置 302:请求的资源临时移动到新位置 304:请求内容无改变 401:未授权 403:禁止访问 404:文件未找到 500:服务器内部错误 501 ...
- 修复Java使用POI合并Excel单元格后,边框不显示的问题
使用Apache POI生成Excel文档时,当进行单元格合并操作后,被合并的单元格边框会消失,使用如下方式可以解决. 创建方法: public void setBorderStyle(int bor ...
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
为了帮助大家更好地理解 Kubernetes 架构,我们部署一个应用来演示各个组件之间是如何协作的. 执行命令 kubectl run httpd-app --image=httpd --replic ...
- JavaProblem之hashCode详解
一.HashCode简介 1.1.什么是Hash和Hash表 要想清楚hashCode就要先清楚知道什么是Hash 1)Hash hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来 ...
- linux基本命令学习01
=============================================================================Unix/Linux最主要的应用领域是基础服务 ...