JAVA优先级队列元素输出顺序测试
package code.test; import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.Queue; /**
* 实验表明,在java中:
* 1.toString()方法或迭代元素:优先级队列打印或者迭代,得到的输出顺序都为堆结构数组的顺序,大致有序但不完全保证顺序
* 2.使用poll()方法:元素整体有序,但由于堆排序是不稳定排序,优先级相同的元素,不会保持原来的顺序输出
* Created by cg on 2017/9/7.
*/
public class PriorityQueueTest {
public static void main(String[] args) {
Queue<Integer> queue = new PriorityQueue<Integer>();
queue.add(1);
queue.add(5);
queue.add(3);
queue.add(2);
queue.add(8);
queue.add(10);
queue.add(23);
queue.add(14);
System.out.println(queue); //输出:[1, 2, 3, 5, 8, 10, 23, 14]
Iterator<Integer> iterator = queue.iterator();
while (iterator.hasNext()){
System.out.print(iterator.next() + " ");
}//输出:1 2 3 5 8 10 23 14
System.out.println();
Queue<Student> queue1 = new PriorityQueue<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.age - s2.age;
}
});
queue1.add(new Student("a", 14));
queue1.add(new Student("b", 12));
queue1.add(new Student("c", 12));
queue1.add(new Student("d", 12));
queue1.add(new Student("e", 12));
queue1.add(new Student("f", 13));
queue1.add(new Student("g", 11));
while (!queue1.isEmpty()){
System.out.println(queue1.poll());
}
/*输出
g:11
c:12
d:12
e:12
b:12
f:13
a:14
*/
}
} class Student{
String name;
int age; public Student(String name, int age) {
this.name = name;
this.age = age;
} @Override
public String toString() {
return name + ":" + age;
}
}
JAVA优先级队列元素输出顺序测试的更多相关文章
- C++ - 库函数优先级队列(priority_queue)输出最小值 代码
库函数优先级队列(priority_queue)输出最小值 代码 本文地址: http://blog.csdn.net/caroline_wendy 库函数优先级队列(priority_queue)的 ...
- Java优先级队列
package com.lk.A; import java.util.PriorityQueue; public class Test5 { public static void main(Strin ...
- 什么是Java优先级队列?
PriorityQueue是基于无界优先级队列和优先级堆构建的重要Java API之一.本文通过适当的代码示例深入了解了有关此API及其用法的一些复杂信息.另在上篇文章中我们简单地谈了下Java编译器 ...
- Java优先级队列实现
优先级队列数组实现: public class PriorityQueue { private int[] data; private int size; public PriorityQueue(i ...
- java优先级队列的使用 leecode.703.数据流中的第K大元素
//设计一个找到数据流中第K大元素的类(class). //注意是排序后的第K大元素,不是第K个不同的元素. class KthLargest { private PriorityQueue<I ...
- 什么是Java优先级队列(Priority Queue)?
PriorityQueue是一个基于优先级堆的无界队列.它的元素是按照自然顺序排序的.在创建元素的时候,我们给它一个一个负责排序的比较器.PriorityQueue不允许null值,因为 它们没有自然 ...
- java类中元素初始化顺序
结论:对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器. public class Test4 { @Tes ...
- java类中元素初始化顺序详解
父类静态变量父类静态块子类静态变量子类静态块父类普通变量父类普通块父类构造方法子类普通变量子类普通块子类构造方法
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
随机推荐
- MFC 坦克定位
最近学习MFC,写了个用键盘上下左右移动的坦克界面,效果图: 先用VC++新建一个最简单的MFC项目,基于Dialog的 1. 添加坦克图片资源:略 2. 添加3个变量:x, y, m_bitmap ...
- 吉特日化MES-日化生产称料基本步骤
在日化行业称料是一个非常重要的环节,整个生产过程中称料所占据的时间也比较长,特别是遇到对料体精度高,量大的情况下称料都比较困难,汇总一下人工称料的基本过程: (1) 称量任务准备:根据生产工单或者生产 ...
- gohost -- go 开发的命令行hosts配置管理工具
前几天在微博上看到有人推荐了lazygit这个工具,让人眼前一亮,什么时候命令行也可以这么抢到了,
- RabbitMQ 发布订阅
互联网公司对消息队列是深度使用者,因此需要我们了解消息队列的方方面面,良好的设计及深入的理解,更有利于我们对消息队列的规划. 当前我们使用消息队列中发现一些问题: 1.实际上是异步无返回远程调用,由发 ...
- React 系列 - 写出优雅的路由
前言 自前端框架风靡以来,路由一词在前端的热度与日俱增,他是几乎所有前端框架的核心功能点.不同于后端,前端的路由往往需要表达更多的业务功能,例如与菜单耦合.与标题耦合.与"面包屑" ...
- SQL Server 跨服务器查询
select * from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=10.10.10.10;User ID=sa;Password=123456'). [CF ...
- Codeforces Round #533 (Div. 2) A. Salem and Sticks(暴力)
A. Salem and Sticks time limit per test 1 second memory limit per test 256 megabytes input standard ...
- PS绘制扁平化风格相机镜头UI图标
一.新建一个画布,绘制一个460*460图层,圆角半径40像素.填充渐变颜色,加一点点投影,这样就有质感了. 二.接下来我们要来绘制主体部分,绘制一个圆,大小400*400,用内阴影,渐变叠加,投影得 ...
- Python_编写UDP通信编解码类、文件的上传、远程执行命令、黏包
1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class ...
- The New Villa
题目:The New Villa 题目链接:http://poj.org/problem?id=1137 题目大意: 一个人买了一个别墅,里面有很多房间,特别的是这个别墅的房间里灯的开关是乱套的,也就 ...