【转载保存】java优先队列使用

PriorityBlockingQueue是一个带优先级的阻塞队列,提供了阻塞获取操作。元素按优先级顺序被移除,该队列也没有上限(看了一下源码,PriorityBlockingQueue是对 PriorityQueue的再次包装,是基于堆数据结构的,而PriorityQueue是没有容量限制的,与ArrayList一样,所以在优先阻塞队列上put时是不会受阻的。虽然此队列逻辑上是无界的,但是由于资源被耗尽,所以试图执行添加操作可能会导致 OutOfMemoryError),但是如果队列为空,那么取元素的操作take就会阻塞,所以它的检索操作take是受阻的。另外,往入该队列中的元素要具有比较能力,插入不可比较的对象会抛出 ClassCastException。

iterator() 方法中提供的迭代器并不 保证以特定的顺序遍历 PriorityBlockingQueue 的元素。如果需要有序地进行遍历,则应使用 Arrays.sort(pq.toArray())。此外,可以使用方法 drainTo 按优先级顺序移除全部或部分元素,并将它们放在另一个 collection 中。

package entity;public class People {private Boolean isVIP; //会员private String name;public People(Boolean isVIP, String name) {super();this.isVIP = isVIP;this.name = name;}public Boolean getIsVIP() {return isVIP;}public void setIsVIP(Boolean isVIP) {this.isVIP = isVIP;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "People [isVIP=" + isVIP + ", name=" + name + "]";}
}
	// Priority Queue 优先级队列@Testpublic void testListPriorityQueue(){People p3 = new People(true,"zjh");People p4 = new People(false,"zy");People p5 = new People(true,"zj");People p6 = new People(false,"zkn");People p7 = new People(true,"zyy");People p8 = new People(false,"znn");People p9 = new People(true,"js");Comparator<People> parator = (p1,p2)->{if(p1.getIsVIP() == true && p2.getIsVIP() == false){return -1;}else if (p1.getIsVIP() == false && p2.getIsVIP() == true){return 1;}else{return 0;}};PriorityBlockingQueue<People> queue = new PriorityBlockingQueue(20,parator);queue.add(p3);queue.add(p4);queue.add(p5);queue.add(p6);queue.add(p7);queue.add(p8);queue.add(p9);/*while(queue.size()>0){System.out.println(queue.remove());}*/List<People> list = new ArrayList<>();// 按顺序移除全部元素,并将元素添加到ArrayList中//queue.drainTo(list);// 按顺序移除3个元素,并将元素添加到ArrayList中queue.drainTo(list,3);list.stream().forEach(System.out::println);}

原文链接:https://blog.csdn.net/qq360694660/article/details/80270875

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转载保存】HtmlUnit的使用

信息来源&#xff1a; https://blog.csdn.net/moneyshi/article/details/78799949 https://blog.csdn.net/qq_36176250/article/details/77199595

初入职场的你不应错过的一些书籍

在职场中&#xff0c;听过最接地气的一句话就是&#xff1a;在职场中要眼睛里有活儿&#xff0c;知道什么该说什么不该说&#xff0c;也不要说自己不确定的事情。今天来推荐一些职场老手建议看的书 《好好说话》 有太多人初入职场不会说话&#xff0c;而说话的能力是可以培养的…

关于 Unity WebGL 的探索

转自:https://www.cnblogs.com/yaukey/p/unity_webgl_explore_1.html 查找了 Unity 的官方资料&#xff0c;我们如果需要使用 WebGL 需要面对以下几个挑战&#xff1a; Native Plugin&#xff1a;也就是说各种原生插件&#xff08;C/C等编译的本地机器码库&#xff09;&#…

【转载保存】cookie在登录时的使用

地址:https://blog.csdn.net/df19900725/article/details/78066468?locationNum4&fps1 浏览器按F12点击network中其中一个文件&#xff0c;查看右边信息&#xff0c;把带有Cookie:这种放在addCookie(“Cookie”,“Cookie:”)这种格式

TCP/IP协议详解 卷一(阅读指导)

1. 为了利用网络知识理解服务端网络架构、排查问题、解决问题. 真的没有必要背, wireshark 工具都给你解析的不能再细了。有没有重传&#xff0c;有没有乱序&#xff0c;数据包接收的时间&#xff0c;发送窗口多大&#xff0c;数据有没有拥塞&#xff0c;等等.... 以及协议的解…

Unity脚本生命周期与执行顺序

目录 脚本生命周期 MonoBehavior生命周期图脚本执行顺序 自定义执行顺序 (文章目录) 在Unity中&#xff0c;脚本可以理解为附加在游戏对象上的用于定义游戏对象行为的指令代码。必须绑定在游戏对象上才能开始它的生命周期。游戏对象可以理解为能容纳各种组件的容器&#xff0c…

【转载保存】Java丨jsoup网络爬虫登录得到cookie并带上cookie访问

优秀文章:https://blog.csdn.net/wisdom_maxl/article/details/65631825 jsoup使用cookie&#xff1a; Set<Cookie> cookie_set LoadCSDN.load(); // WebClient wc new WebClient();HashMap<String, String> map new HashMap<String,String>();for (Cook…

Unity3D(UE4)加载倾斜摄影数据OSGB格式

在Unity3D平台动态加载调度倾斜摄影数据&#xff0c;利用多线程动态加载瓦片数据&#xff0c;可以顺畅加载海量的瓦片数据。目前测试可流畅加载100G左右数据&#xff0c;支持加载本地数据&#xff0c;数据可不放在Unity工程内&#xff0c;也可以将数据放置在服务器上实现网络加…

【转载保存】Jsoup解析html常用方法

首先我们要清楚 class的继承关系 Document 继承于 Element 继承于 Node 继承于 Object 首先 我们先研究一下 Element 中的函数作用: 01 addClass(String className) --> 添加一个class名字 到这个元素的class属性上. 02 after(Node node) --> 将指定的节点添加…

Unity打包失败解决方案

更改设置即可 &#xff1a;Edit -> Graphics Emulation-> Shader Hardware Tier 1

【转载保存】接口的压力测试工具

https://blog.csdn.net/luosaosao/article/details/72900072

Unity3D实现谷歌数字地球

Unity3D实现谷歌地球 在Unity3d平台实现的类似谷歌地球的功能&#xff0c;可动态加载谷歌&#xff0c;ArcGis,BingMap,天地图影像&#xff0c;也可加载国界线等矢量文件以及在线加载高程文件。 视频链接: 地球操作:https://www.bilibili.com/video/BV1mT4y1P771 地球漫游:h…

Unity下载安装网址

https://unity.cn/releases

【转载保存】java牛逼的开源项目汇总

http://blog.longjiazuo.com/archives/2625?hmsrtoutiao.io&utm_mediumtoutiao.io&utm_sourcetoutiao.io

Unity罗技方向盘接入

要想在Unity中接入罗技方向盘的数据&#xff0c;首先必须安装驱动&#xff0c;并且打开安装的软件&#xff0c;否则在Unity中会一直连接不成功。状态如下&#xff1a; 然后下载相应的开发包Logitech SDK即可&#xff0c;需要替换相应的LogitechSteeringWheelEnginesWrapper.dll…

sscanf

sscanf&#xff08;&#xff09; 2010-01-28 11:53:42| 分类&#xff1a; Work|举报|字号 订阅 下载LOFTER我的照片书 |定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格…

【转载保存】网页提取正文算法汇总

正文抽取算法&#xff1a; 1.Html2Article &#xff1a;http://www.cnblogs.com/jasondan/p/3497757.html 2.基于行块分布函数的网页正文抽取算法代码实现https://blog.csdn.net/leiguang55555/article/details/51959646 源码下载: https://blog.csdn.net/red4711/article/deta…

ModBus协议寄存器

ModBus有四种数据&#xff0c;DI、DO、AI、AO DI: 数字输入&#xff0c;离散输入&#xff0c;一个地址一个数据位&#xff0c;用户只能读取它的状态&#xff0c;不能修改。比如面板上的按键、开关状态&#xff0c;电机的故障状态。 DO: 数字输出&#xff0c;线圈输出&#xf…

字典树

微博:TankyWoo基新博客:TankyWooTanky Woo的前博客 字典树&#xff08;讲解模版&#xff09; 又称单词查找树&#xff0c;Trie树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串…