• 今天发现了新大陆。我以前一直以为,PriorityQueue队列是基于堆排序的不断更新排序的,没错,它是不断更新排序的。但是前提是要插入(删除)数据,如果仅仅是修改已经稳定队列的值或内容,而不进行插入或者删除,那么,这个顺序是不会变的。
    举个例子:
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;public class BankerClass {public static void main(String[] args){Queueq1=new PriorityQueue(com);q1.add(new node(1, 5));node team=new node(2, 2);q1.add(team);q1.add(new node(3, 9));q1.add(new node(4, 7));for(node no:q1){System.out.println("id :"+ no.id +" value" +no.value);}System.out.println();team.value=6;//修改了value,按道理不应该在第一,for(node no:q1){System.out.println("id :" +no.id " value" +no.value);}}static Comparatorcom=new Comparator() {@Overridepublic int compare(node o1, node o2) {//基于value排序return o1.value-o2.value;}};
static class node
{int id;int value;public node(int id,int value){this.value=value;this.id=id;}
}
}

输出为:
id :2 value2
id :1 value5
id :3 value9
id :4 value7

id :2 value6
id :1 value5
id :3 value9
id :4 value7
如果想更新排序,可以这样操作:修改后添加
q1.remove(team);
q1.add(team);

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;public class BankerClass {public static void main(String[] args){Queueq1=new PriorityQueue(com);q1.add(new node(1, 5));node team=new node(2, 2);q1.add(team);q1.add(new node(3, 9));q1.add(new node(4, 7));for(node no:q1){System.out.println("id :"+ no.id+ " value" +no.value);}System.out.println();team.value=6;//修改了value,按道理不应该在第一,q1.remove(team);q1.add(team);for(node no:q1){System.out.println("id :"+ no.id " value"+ no.value);}}static Comparatorcom=new Comparator() {@Overridepublic int compare(node o1, node o2) {//基于value排序return o1.value-o2.value;}};
static class node
{int id;int value;public node(int id,int value){this.value=value;this.id=id;}
}
}

输出为:
id :2 value2
id :1 value5
id :3 value9
id :4 value7

id :1 value5
id :2 value6
id :3 value9
id :4 value7

当然有多个如果你也可以添加一个新的node肯定排在第一的,然后poll出去也可以。这样就可以保证优先队列的数据是最新的。

如果对后端、爬虫、数据结构算法等感性趣欢迎关注我的个人公众号交流:bigsai

java优先队列PriorityQueue修改队列内元素排序问题相关推荐

  1. java 中PriorityQueue优先级队列使用方法

    1.前言 优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果想实现按照自己的意愿进行优 ...

  2. java中PriorityQueue优先级队列使用方法

    优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果不提供Comparator的话,优先 ...

  3. java优先队列 PriorityQueue详解(附图)

    文章目录 前言 一.概念及应用场景 二.原理及源码分析 1. 了解继承图 2. 优先队列的插入 总结 前言 最近接触到优先队列的题目,正好趁这个机会复习一下优先队列,并深入了解一下源码. 一.概念及应 ...

  4. java优先队列PriorityQueue

    文章目录 前言 PriorityQueue 优先队列 java中优先队列的声明 按优先级排序 常见方法 private void grow(int minCapacity) public boolea ...

  5. Java之PriorityQueue有序队列

    转自:https://baijiahao.baidu.com/s?id=1665383380422326763&wfr=spider&for=pc 最近在刷力扣题的时候不止一次看到过这 ...

  6. 【Java方法】统计数组内不同元素个数及每个元素的数量

    [Java方法]统计数组内元素的种类数及每种元素的数量 1.统计数组内元素的种类数 2.统计数组内每种元素的数量 我们假定一个一维数组 a={1,2,3,2,2,3,1,3,2,1,2,3,1,2,1 ...

  7. c语言优先队列对数组的排序,优先队列+sort+栈+队列讲解

    队列我们都知道,是一种先进后出的数据结构. 队列的基本操作http://blog.csdn.net/qq_32680617/article/details/50822430 而优先队列是把队列内部的数 ...

  8. java优先队列的入队函数_Java内置的优先队列PriorityQueue

    PriorityQueue是Java内置的优先队列,每次取出来的元素是最小的.PriorityQueue可以做到自动扩容.PriorityQueue中的对象必须是可比较的. 例如,最简单的情况,在Pr ...

  9. java先进先出 循环队列,JavaScript队列、优先队列与循环队列

    队列是一种遵从先进先出(FIFO)原则的有序集合 队列在尾部添加新元素,从顶部移除元素 队列的理解 队列在我们生活中最常见的场景就是排队了 队列这个名字也已经很通俗易懂了 和栈很像,这不过队列是先入先 ...

最新文章

  1. java+long.builder_Java LongStream.Builder accept()用法及代码示例
  2. 厦门计算机高级职称,2021年厦门工程师职称属于哪种职称?
  3. MIT华人博士研究新冠遭学术霸凌!斯坦福诺奖得主:“你论文少,别说话!”...
  4. Expandable Input Toolbar
  5. python3 拼接字符串的7种方法
  6. solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询
  7. C语言 浅谈可变参数
  8. python Lambda 表达式
  9. java线程跟多线程
  10. linux从表中提取信息,如何用Linux命令提取表格文本中的某列
  11. 使用本地计划任务定时关闭azure虚拟机
  12. Google与GitHub 结盟,为保护软件供应链而战
  13. Vijos P1127 级数求和【数列】
  14. minimax算法(井子棋)
  15. 【FICO】标准成本、计划成本、实际成本、目标成本
  16. m1MacBook Pro pycharm打字卡顿问题解决
  17. Java笔记——反射常用方法
  18. POI设置和读取excel分组信息,多级分组设置
  19. 2021年中国智能驾驶行业研究报告
  20. vue循环jq渲染网页页面

热门文章

  1. Harbor2.2.1配置(trivy扫描器、镜像签名)
  2. buu 萌萌哒的八戒
  3. 【Flask】Jinja2之模板中使用url_for
  4. Linux Kernel 5.14 arm64异常向量表解读-中断处理解读
  5. 04-CA/TA编程:hash demo
  6. MongoDB常见面试题及答案模板
  7. 欧几里德与扩展欧几里德算法——密码学笔记(五)
  8. 设定printf在终端输出的颜色
  9. photoshop学习笔记(一)2015-12-4【新浪云搬运】
  10. Break,Continue,Return 傻傻分不清楚