Java集合之PriorityQueue
来源:互联网 发布:淘宝开店资源 编辑:程序博客网 时间:2024/06/05 16:49
package com.lirui.priorityqueue;
import java.util.Comparator;
/*
* 优先级队列是通过二叉小根堆实现的。
* 优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)。
* 元素大小的评判可以通过元素本身的自然顺序,也可以通过构造时传入的比较器。
*/
import java.util.PriorityQueue;
public class Test1 {
private String name;
private int population;
public Test1(String N, int population) {
this.name = N;
this.population = population;
}
public String getName() {
return name;
}
public int population() {
return population;
}
@Override
public String toString() {
return name + String.valueOf(population);
}
public static void main(String[] args) {
// 构造一个比较器
Comparator<Test1> comparator = new Comparator<Test1>() {
@Override
public int compare(Test1 o1, Test1 o2) {
if (o1.population == o2.population)
return 0;
else if (o1.population > o2.population)
return -1;
else {
return 1;
}
}
};
// 通过构造的比较器来new一个优先级队列。
PriorityQueue<Test1> priority = new PriorityQueue<>(comparator);
priority.add(new Test1("beijing", 960000));
priority.add(new Test1("shanghai", 657000));
priority.add(new Test1("wuhan", 576200));
priority.add(new Test1("xianning", 241000)); // 向队列中插入一个元素,和offer()函数用法相同,但是add()插入异常时会抛出异常,而offer()插入异常是会返回false.
boolean flag = priority.offer(new Test1("dongbei", 475120));
System.out.println(priority.peek());
System.out.println(priority);
priority.remove(); // 删除堆顶元素,和poll()方法效果一样,但是remove()方法失败是抛出异常,而poll()则会返回null
System.out.println(priority);
priority.poll();
System.out.println(priority);
}
}
import java.util.Comparator;
/*
* 优先级队列是通过二叉小根堆实现的。
* 优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)。
* 元素大小的评判可以通过元素本身的自然顺序,也可以通过构造时传入的比较器。
*/
import java.util.PriorityQueue;
public class Test1 {
private String name;
private int population;
public Test1(String N, int population) {
this.name = N;
this.population = population;
}
public String getName() {
return name;
}
public int population() {
return population;
}
@Override
public String toString() {
return name + String.valueOf(population);
}
public static void main(String[] args) {
// 构造一个比较器
Comparator<Test1> comparator = new Comparator<Test1>() {
@Override
public int compare(Test1 o1, Test1 o2) {
if (o1.population == o2.population)
return 0;
else if (o1.population > o2.population)
return -1;
else {
return 1;
}
}
};
// 通过构造的比较器来new一个优先级队列。
PriorityQueue<Test1> priority = new PriorityQueue<>(comparator);
priority.add(new Test1("beijing", 960000));
priority.add(new Test1("shanghai", 657000));
priority.add(new Test1("wuhan", 576200));
priority.add(new Test1("xianning", 241000)); // 向队列中插入一个元素,和offer()函数用法相同,但是add()插入异常时会抛出异常,而offer()插入异常是会返回false.
boolean flag = priority.offer(new Test1("dongbei", 475120));
System.out.println(flag);
System.out.println(priority.element()); // 在优先级队列中取堆顶元素,但不删除元素。和peek()的效果一样,但是element()取元素失败会抛出异常,而peek()则会返回nullSystem.out.println(priority.peek());
System.out.println(priority);
priority.remove(); // 删除堆顶元素,和poll()方法效果一样,但是remove()方法失败是抛出异常,而poll()则会返回null
System.out.println(priority);
priority.poll();
System.out.println(priority);
}
}
/*
输出:
true
beijing960000
beijing960000
[beijing960000, shanghai657000, wuhan576200, xianning241000, dongbei475120]
[shanghai657000, dongbei475120, wuhan576200, xianning241000]
[wuhan576200, dongbei475120, xianning241000]
*/
阅读全文
0 0
- java集合之PriorityQueue
- Java集合之PriorityQueue
- java集合之PriorityQueue
- 深入Java集合系列之五:PriorityQueue
- java集合类深入分析之PriorityQueue
- java集合类深入分析之PriorityQueue
- 深入Java集合系列之五:PriorityQueue
- java集合框架之List------03_03 Queue PriorityQueue ArrayDeque
- JAVA学习---集合系列---PriorityQueue
- [疯狂Java]集合:Queue、PriorityQueue
- Java之PriorityQueue
- Java源码阅读之PriorityQueue
- 深入学习Java之PriorityQueue
- Java Queue系列之PriorityQueue
- Java常见集合框架(十六):Queue之DelayQueue、PriorityQueue、PriorityBlockingQueue
- java之_队列(PriorityQueue 优先级队列)
- java PriorityQueue
- PriorityQueue<> JAVA
- H264
- 数据库索引的作用和优点缺点
- 在div中嵌入一个子页面:iframe标签与object标签
- 为什么大部分码农做不了软件架构师?
- Ros怎么配置DMZ?防火墙教程-ros配置DMZ
- Java集合之PriorityQueue
- ZZULIOJ【1091】童年生活二三事【斐波那契】
- java 堆内与堆外内存;java的栈内存和堆内存
- 中文Centos(含linux)分区的详细教程及要点分析
- 系统库设置可选的是配不同手机版本
- Android
- Jquery DataTables 列 columns 和 columnDefs基本使用
- 数据结构实验之队列一:排队买饭(队列)
- 排序算法总结之堆排序