Java中的容器 I————浅谈Queue和PriorityQueue
一.Queue的实现
通过LinkedList类实现Queue接口来完成对Queue的实例类的实现,代码如下:
Queue<Integer> queue=new LinkedList<>();//linkedList实现了Queue接口,将其向上转型为队列
二.Queue的方法
1.offer————加入元素(加入至队尾)
queue.offer(2);//使用offer将元素插入队尾
2.remove,poll————返回头结点并删除元素
区别remove方法在队列为空时将抛出异常,而poll将返回null
queue.remove();//remove poll 返回头结点并移除 remove在空时抛出异常 但是poll返回null
3.element,peek ————返回头结点,不删除元素
区别element方法在队列为空时将抛出异常,而peek 将返回null
queue.peek();//删除头结点peek/element都是返回队头但是不移除队头,但是peek在没有元素时返回null element抛出异常
三.PriorityQueue队列(优先级队列)的实现
注意点:
在实现了comparator接口的类可以在PriorityQueue队列中调用offer方法实现排序
代码如下:
PriorityQueue<Integer> pque=new PriorityQueue<>();
pque.offer(6);//使用offer添加可以保证有序
pque.offer(0);
pque.offer(23);
pque.offer(1);
System.out.println(pque);//0 1 23 6
pque.add(3);//使用add方法无法排序
System.out.println(pque);//无须
(补充)
一.了解collection和iterator的关系
首先只有实现了iterator接口的才能使用foreach遍历(数组除外)。
collection是iterator接口的子接口
public interface Collection<E> extends Iterable<E> {
所以collection所有的子接口可以实现foreach遍历。
Java中的容器 I————浅谈Queue和PriorityQueue的更多相关文章
- Java中的容器 I————浅谈List
一.List接口的继承关系 List接口是Collection接口的子接口,而ArrayList和LinkedList以及Vector是其实现类. List的特点是可以将元素维护在特定的序列中,可以再 ...
- 对kotlin和java中的synchronized的浅谈
synchronized在java中是一个关键字,但是在kotlin中是一个内联函数.假如分别在java和kotlin代码锁住同一个对象,会发生什么呢,今天写了代码试了试.首先定义people类 12 ...
- Java中Integer和String浅谈
Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float.short.Java作为一种面向对象的编程语言,数据在Java中也是一种对象.我们用基本 ...
- Java中常用修饰符浅谈
一.public.protected.default和private修饰符的作用域 public:在java程序中,如果将属性和方法定义为 public 类型,那么此属性和方法所在的类和及其子类,同一 ...
- Java中的SPI原理浅谈
在面向对象的程序设计中,模块之间交互采用接口编程,通常情况下调用方不需要知道被调用方的内部实现细节,因为一旦涉及到了具体实现,如果需要换一种实现就需要修改代码,这违反了程序设计的"开闭原则& ...
- (转)Java中的容器详细总结
Java中的容器详细总结(编辑中) 原文链接:http://anxpp.com/index.php/archives/656/ 注:本文基于 Jdk1.8 编写 通常程序总是根据运行时才知道的某些条件 ...
- .net中对象序列化技术浅谈
.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储 ...
- java中的容器问题
小小的总结一下java中的容器问题. 一.三个知识点 1.迭代器 1).java.util.Interator + hasnext(); next(); remove(); 2).java.lang. ...
- Java中的容器(集合)之ArrayList源码解析
1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...
随机推荐
- python 豆瓣验证码识别总结
总结: pytesseract 识别比较标准的图片 识别成功率 还是不错的. 验证码的图片识别 需要先处理好 再用pytesseract 识别 from PIL import Image ...
- MySQL(一) 初识MySQL
数据库基础 数据库是由一批数据构成的有序的集合,这些数据被存放在结构化的数据表里.数据表之间相互联系,反映了客观事物间的本质联系.数据库系统提供对数据的安全控制和完整性控制. 什么是数据库 数据库的发 ...
- shell script auto generate the relevant header information
first : add follow context in /etc/vim/vimrc set ignorecaseset cursorlineset autoindentautocmd Buf ...
- API服务网关(Zuul)
技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢. 当然,因为是REST API接口,外部客户端直接调用各个微服务是没有问 ...
- day21-python操作mysql1
python的mysql操作 mysql数据库是最流行的数据库之一,所以对于python操作mysql的了解是必不可少的.Python标准数据库接口为Python DB-API, Python DB- ...
- xshell提示必须安装最新的更新
今天大家的xshell基本都出了这个问题 调整时间,调整到比较前的时间,打开xshell即可. 然后工具->选项 把更新去了
- oo作业总结(四)
测试与正确性论证 测试是通过构造一系列测试数据,通过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段.同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO作 ...
- AttributeError: 'cx_Oracle.Cursor' object has no attribute 'numbersAsStrings'
转载自:https://www.wengbi.com/thread_77579_1.html 最近在本地搭建Django开发环境,Django 1.11,python 2.7.11,数据库Oracle ...
- day17 面向对象-成员
今日主要学习了: 1 .成员 2. 变量 3. 方法 4.属性 5.私有 1. 成员 在类中你能写的所有内容都是成员 2 .变量 1) 实例变量: 昨天写的就是实例变量 ,由对象去访问的变量 . cl ...
- log4j 输出原始数据到指定日志文件
项目中需要将上传的数据输出到指定的log文件,之前对log4j缺少深入认识,普遍将整个应用的日志到输出到一个文件. 在经理的帮助下,业务数据可以直接输出到指定的log文件,现将配置及使用流程整理一下. ...