PriorityQueue(优先队列)使用完整示例
发布日期:2021-06-30 11:16:12
浏览次数:3
分类:技术文章
本文共 2521 字,大约阅读时间需要 8 分钟。
package cc.cv;import java.util.Comparator;import java.util.PriorityQueue;/** * PriorityQueue(优先队列)使用完整示例 * 采用PriorityQueue时里面的每个元素按照一定标准的优先级进行存储. * 而这个优先级的标准我们可以用Comparator来自己定义. * * 参考资料: * 1 http://blog.csdn.net/chengyingzhilian/article/details/8078032 * 2 http://java-er.com/blog/java-priority-queue/ * 3 http://blog.csdn.net/hantiannan/article/details/7623108 * Thank you very much * */public class PriorityQueueTest { private int initialCapacity=10; public static void main(String[] args) { PriorityQueueTest priorityQueueTest=new PriorityQueueTest(); priorityQueueTest.test(); } /** * 将一群斑马放入优先队列PriorityQueue中. * 既然是优先队列PriorityQueue,那么就有一个优先的标准. * 在此就按照每个斑马的身高优先将一群斑马存在队列中 */ private void test(){ PriorityQueuepriorityQueue=new PriorityQueue (initialCapacity, new ZebraComparator()); Zebra zebra1=new Zebra("a", 130); priorityQueue.add(zebra1); Zebra zebra2=new Zebra("b", 130); priorityQueue.add(zebra2); Zebra zebra3=new Zebra("c", 130); priorityQueue.add(zebra3); Zebra zebra4=new Zebra("d", 130); priorityQueue.add(zebra4); Zebra zebra5=new Zebra("a", 110); priorityQueue.add(zebra5); Zebra zebra6=new Zebra("c", 120); priorityQueue.add(zebra6); System.out.println("priorityQueue.size()="+priorityQueue.size()); //每个元素依次出队,便于测试 while (!priorityQueue.isEmpty()){ System.out.println(priorityQueue.poll()); } System.out.println("priorityQueue.size()="+priorityQueue.size()); } //按照斑马的身高进行排序,身高相同时再比较名字 class ZebraComparator implements Comparator { @Override public int compare(Object arg0, Object arg1) { Zebra zebra0 = (Zebra) arg0; Zebra zebra1 = (Zebra) arg1; if (zebra0.getHeight() > zebra1.getHeight()) { return 1; } // 身高相同时再比较名字 if (zebra0.getHeight() == zebra1.getHeight()) { return zebra0.getName().compareTo(zebra1.getName()); } if (zebra0.getHeight() < zebra1.getHeight()) { return -1; } return 0; } } /** * 动物园里的大熊猫和斑马还是很可爱的。 * 看大熊猫的话,成都熊猫基地很爽. * 看斑马的话,北京动物园不错,里面还有需要仰着脖子看的长颈鹿...... * 在这里就用斑马举例吧,它有名字和身高这两个属性 */ private class Zebra{ private String name; private int height; public Zebra(String name, int height) { super(); this.name = name; this.height = height; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } @Override public String toString() { return "Zebra [name=" + name + ", height=" + height + "]"; } }}
转载地址:https://it9527.blog.csdn.net/article/details/40542473 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年05月04日 04时26分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
最短路径 啊哈算法读书笔记
2019-04-30
Codeforces Round #358 (Div. 2)
2019-04-30
离散数学第六章 图
2019-04-30
hdu 1548 A strange lift(最短路)
2019-04-30
HDOJ 2544 最短路(四种做法)
2019-04-30
HDOJ 3790 最短路径问题
2019-04-30
HDU 3788 ZOJ问题
2019-04-30
UVa 401 Palindromes(简单字符串)
2019-04-30
POJ1694 An Old Stone Game
2019-04-30
Codeforces Round #359 (Div. 2)
2019-04-30
HDU-2896 病毒侵袭 && HDU-3065 病毒侵袭持续中(AC自动机)
2019-04-30
Manacher算法(O(n)求得最长回文)
2019-04-30
POJ-3080 Blue Jeans(简单字符串)
2019-04-30
HDU-2594 Simpsons’ Hidden Talents(KMP)
2019-04-30
Codeforces Round #368 (Div. 2)
2019-04-30
HDU-1274 Hat’s Words(Trie树)
2019-04-30
POJ-2418 Hardwood Species(Trie树)(map)
2019-04-30
HDU-4300 Clairewd’s message + 4333(扩展KMP)
2019-04-30
HDU 1592 Half of and a Half(高精度)
2019-04-30
POJ-3304 Segments(计算几何)
2019-04-30