Java中的优先队列PriorityQueue如何排序

目录

一、基本数据类型的排序

(1)升序

(2)降序 

二、自定义类型如何排序

(1)升序

 (2)降序


既然大家想要了解优先队列的排序,那么说明已经知道什么事优先队列了,这里我就不多说了,直接说怎么排序了。

一、基本数据类型的排序

(1)升序

PriorityQueue默认的排序是从小到大。如下:

import java.util.*;
import java.io.*;

public class Main {
    static PriorityQueue<Integer> queue=new PriorityQueue<>();
    public static void main(String[] args) {
        queue.add(2);
        queue.add(30);
        queue.add(17);
        queue.add(27);
        queue.add(7);

        while(!queue.isEmpty()){
            System.out.println(queue.poll());
        }
    }
}

(2)降序 

import java.util.*;
import java.io.*;

public class Main {
    static PriorityQueue<Integer> queue=new PriorityQueue<>(Comparator.reverseOrder());
    public static void main(String[] args) {
        queue.add(2);
        queue.add(30);
        queue.add(17);
        queue.add(27);
        queue.add(7);

        while(!queue.isEmpty()){
            System.out.println(queue.poll());
        }
    }
}

二、自定义类型如何排序

关于自定义类型,就是比如创建一个node类,其中有x和y两种属性,那么排序是按照x值还是按照y值来排序呢,这里我们就都按照x值来排序了,y值大家可以自己试试。下面我们来看看吧!

(1)升序

import java.util.*;
import java.io.*;

public class Main {
    static PriorityQueue<node> q1=new PriorityQueue<node>();
    static class node implements Comparable<node>{
        int x,y;
        node(int x,int y){
            this.x=x;
            this.y=y;
        }

        @Override
        public int compareTo(node o) {
            //排序
            return this.x-o.x;
        }
    }

    public static void main(String[] args) {
        q1.add(new node(12,16));
        q1.add(new node(2,30));
        q1.add(new node(19,90));
        q1.add(new node(32,17));
        q1.add(new node(7,13));
        while(!q1.isEmpty()){
            node now=q1.poll();
            int x=now.x;
            int y=now.y;
            System.out.println("x="+x+" y="+y);
        }
    }
}

 (2)降序

import java.util.*;
import java.io.*;

public class Main {
    static PriorityQueue<node> q1=new PriorityQueue<node>();
    static class node implements Comparable<node>{
        int x,y;
        node(int x,int y){
            this.x=x;
            this.y=y;
        }

        @Override
        public int compareTo(node o) {
            return o.x-this.x;
        }
    }

    public static void main(String[] args) {
        q1.add(new node(12,16));
        q1.add(new node(2,30));
        q1.add(new node(19,90));
        q1.add(new node(32,17));
        q1.add(new node(7,13));
        while(!q1.isEmpty()){
            node now=q1.poll();
            int x=now.x;
            int y=now.y;
            System.out.println("x="+x+" y="+y);
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS 2基础概念#6:服务(Service)| ROS 2学习笔记

服务&#xff08;Service&#xff09;是 ROS 2 计算图中节点通信的另一种方法。 服务基于调用和响应模型&#xff0c;而不是主题的发布者-订阅者模型。 虽然主题允许节点订阅数据流并获取持续更新&#xff0c;但服务仅在客户端专门调用时才提供数据。 ROS 2服务的基本概念 ROS…

浮点数的储存

浮点数的储存 一.浮点数的三段式&#xff08;S,E,M&#xff09;1.如何放入2.如何取出 二.为什么浮点数不能直接比较三.解释第一个问题 我们都知道整形在内存中是按照补码的形式储存的&#xff0c;但是浮点数的储存却和整数的截然不同&#xff0c;浮点数没有所谓是原反补并且浮点…

实现类似 Word 协同编辑--Canvas-Editor

前言 对于word的协同编辑&#xff0c;已经构思很久了&#xff0c;但是没有找到合适的插件。今天推荐基于canvas/svg 的富文本编辑器 canvas-editor&#xff0c;能实现类似word的基础功能&#xff0c;如果后续有更好的&#xff0c;也会及时更新。 Canvas-Editor效果图: 官方文…

重学SpringBoot3-WebMvcAutoConfiguration类

重学SpringBoot3-WebMvcAutoConfiguration类 是什么什么用生效条件作用 自定义配置的三种方式自定义配置举例1. 自定义 DispatcherServlet 配置2. 静态资源配置3. 自定义MVC配置4. 消息转换器5. 异常处理 是什么 org.springframework.boot.autoconfigure.web.servlet.WebMvcAut…

【QT6】打开项目 .pro 一堆报错 但是程序可以运行 打开别人的QT项目后,全是报错

报错环境 我通过在网上拷贝的项目&#xff0c; 然后打开pro文件 build项目 你会发现各种报错 无缘无故的报错 明明环境已经没问题了 解决方案 首先是提示no valid settings file could be found&#xff0c;这个错误很好解决&#xff0c;删除项目目录下的.user文件&#xff…

线性代数笔记14--投影

1. 一维空间投影 p X A e B − p B − X A A ⊤ e 0 A ⊤ ( B − X A ) 0 X A ⊤ A A ⊤ B X A ⊤ B A ⊤ A p X A A A ⊤ B A ⊤ A pXA\\ eB-pB-XA\\ A^{\top}e0\\ A^{\top}(B-XA)0\\ XA^{\top}AA^{\top}B\\ X\frac{A^{\top}B}{A^{\top}A}\\ pXAA\frac{A^{\top}B}{A^…

域名交易系统源码 无需授权即可正常使用,带后台,附带系统搭建教程

搭建教程 数据库配置文件 config/config.php 后台 http://域名/ymadmin 用户&#xff1a;admin 密码&#xff1a;aa.798yyds.top PHP选择5.6 伪静态&#xff1a; 伪静态默认是Apache 伪静态转换&#xff1a;http://tool.bolgk.eu.org/htaccess2nginx/ 其他打不开请根据伪静态设…

Android屏幕共享-硬编码硬解码

Android屏幕共享-硬编码硬解码 说起Android之间的屏幕共享&#xff0c;第一次接触会比较陌生&#xff0c;不过大家多少有了解过ffmpeg&#xff0c;看上去是不是很熟悉&#xff1f;ffmpeg是一套处理音视频的开源程序&#xff0c;但对于C了解较少的同学&#xff0c;编译起来很复杂…

鸿蒙系统:揭秘前端开发的新机遇

众所周知&#xff0c;华为开发者大会2023&#xff0c;宣布不再兼容安卓&#xff0c;同时宣布了“鸿飞计划”&#xff0c;欲与iOS、安卓在市场三分天下&#xff0c;这对中国国产操作系统而言&#xff0c;具有划时代的意义。 鸿蒙应用开发的兴起&发展 鸿蒙操作系统是华为自…

旅游陪同翻译,英译中需要具备什么能力!

随着中国旅游业的蓬勃发展&#xff0c;越来越多的外国游客选择踏足这片充满魅力的土地。然而&#xff0c;语言障碍常常成为他们探索中国文化的绊脚石。在这时&#xff0c;旅游陪同翻译应运而生&#xff0c;为游客提供了便捷的语言沟通服务&#xff0c;让他们的旅程更加顺畅和愉…

NFT Insider #122:OpenSea与科切拉音乐节合作推出NFT系列,Flowty联合创始人购入勒布朗・詹姆斯NFT

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members (https://twitter.com/WHALEMembers)、BeepCrypto (https://twitter.com/beep_crypto) 联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&a…

借着ChatGPT的人机交互聊聊长连接

ChatGPT这两年可谓风靡全球&#xff0c;尤其是最近Sora视频模型的横空出世以及claude 3模型所具备的浅意识&#xff0c;更是像打开了新世界的大门。本文就从ChatGPT的网页聊天开始聊起&#xff08;有蹭热度之嫌&#xff0c;哈哈&#xff09;&#xff0c;聊聊长连接的发展历程和…

13 OpenCv自定义线性滤波

文章目录 卷积算子示例 卷积 卷积是图像处理中一个操作&#xff0c;是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组&#xff0c;其中心点称为锚点(anchor point) 把kernel放到像素数组之上&#xff0c;求锚点周围覆盖的像素乘积之和&#xff08;包括锚…

几种常见的python开发工具

​ Python是一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发等领域。随着Python在各个领域的应用越来越广泛&#xff0c;越来越多的Python开发工具也涌现出来。但是&#xff0c;对于新手来说&#xff0c;选择一款合适的Python开发工具可…

vue3引入高德地图

首先注册高德key https://console.amap.com/dev/key/a vue项目中安转地图包 pnpm i amap/amap-jsapi-loader -S 先说最重要核心&#xff0c;踩雷过 页面中需写入以下代码&#xff0c;现在注册的高德key要求强制写入安全密钥 window._AMapSecurityConfig {securityJsCode…

9、字符串插入和删除

#include <iostream>using namespace std;void test01 () {string s "hello";s.insert (1, "111");cout << s << endl;s.erase(1, 3);cout << s << endl; }int main () {test01();return 0; } 总结&#xff1a; 插入和删除…

基于SVM模型的网络入侵检测模型训练与评估(NSL-KDD数据集)

简介 针对网络安全领域的NSL-KDD数据集进行分类任务的预处理和模型训练、以及超参数调优。 数据预处理 读取并解析数据集&#xff1b;检查并删除指定列&#xff08;outcome&#xff09;的缺失值&#xff1b;对类别型特征&#xff08;protocol_type, service, flag&#xff0…

Linux第73步_学习Linux设备树和“OF函数”

掌握设备树是 Linux驱动开发人员必备的技能&#xff01; 1、了解设备树文件 在3.x版本以前的Linux内核源码中&#xff0c;存在大量的“arc/arm/mach-xxx”和“arc/arm/plat-xxx”文件夹&#xff0c;里面很多个“.c”和“.h”文件&#xff0c;它们用来描述设备信息。而现在的A…

深度学习与人类的智能交互:迈向自然与高效的人机新纪元

引言 随着科技的飞速发展&#xff0c;深度学习作为人工智能领域的一颗璀璨明珠&#xff0c;正日益展现出其在模拟人类认知和感知过程中的强大能力。本文旨在探讨深度学习如何日益逼近人类智能的边界&#xff0c;并通过模拟人类的感知系统&#xff0c;使机器能更深入地理解和解…

深空通信DTN总结

这里写自定义目录标题 A novel Federated Computation approach for Artificial Intelligence applications in Delay and Disruption Tolerant NetworksabstractintroductionDELAY AND DISRUPTION TOLERANT NETWORKS联邦计算用于容忍延迟和干扰的网络的联合学习框架DTN-ML Orc…