当前位置: 首页 > news >正文

Java代码Demo——Map根据key或value排序

Map根据key排序

升序

Demo代码:

//使用TreeMap
Map<Integer, String> map = new TreeMap<>();
map.put(10, "第10名次");
map.put(15, "第15名次");
map.put(1, "第1名次");
map.put(5, "第5名次");
map.put(3, "第3名次");
map.put(8, "第8名次");
System.out.println(map.toString());

运行结果:

{1=第1名次, 3=第3名次, 5=第5名次, 8=第8名次, 10=第10名次, 15=第15名次}

如上所示,TreeMap会根据key值进行排序,默认是升序(注:TreeMap不会根据Value值进行排序)。

降序

Demo代码:

//使用TreeMap,并自定义比较器
Map<Integer, String> map = new TreeMap<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2.compareTo(o1);}
});
map.put(10, "第10名次");
map.put(15, "第15名次");
map.put(1, "第1名次");
map.put(8, "第8名次");
System.out.println(map.toString());

运行结果:

{15=第15名次, 10=第10名次, 8=第8名次, 1=第1名次}

Map根据Value排序

Demo代码:

Map<String, List<String>> valMap = new HashMap<>();
//初始化值
List<String> valList1 = new ArrayList<>();
valList1.add("val1");
valList1.add("val2");
valList1.add("val3");
valList1.add("val4");
List<String> valList2 = new ArrayList<>();
valList2.add("val1");
valList2.add("val2");
List<String> valList3 = new ArrayList<>();
valList3.add("val1");
valList3.add("val2");
valList3.add("val3");
valList3.add("val4");
valList3.add("val5");
valList3.add("val6");
valList3.add("val7");
List<String> valList4 = new ArrayList<>();
valList4.add("val1");
//赋值
valMap.put("key1", valList1);
valMap.put("key2", valList2);
valMap.put("key3", valList3);
valMap.put("key4", valList4);
//将Map转为List
ArrayList<Entry<String, List<String>>> list = new ArrayList<>(valMap.entrySet());
//排序,自定义比较器,根据value值进行降序
list.sort(new Comparator<Entry<String, List<String>>>() {@Overridepublic int compare(Entry<String, List<String>> o1, Entry<String, List<String>> o2) {Integer o1Int = o1.getValue().size();Integer o2Int = o2.getValue().size();return o2Int.compareTo(o1Int);}
});
System.out.println(list);

运行结果:

[key3=[val1, val2, val3, val4, val5, val6, val7], key1=[val1, val2, val3, val4], key2=[val1, val2], key4=[val1]]

相关文章:

Java代码Demo——Map根据key或value排序

Map根据key排序 升序 Demo代码&#xff1a; //使用TreeMap Map<Integer, String> map new TreeMap<>(); map.put(10, "第10名次"); map.put(15, "第15名次"); map.put(1, "第1名次"); map.put(5, "第5名次"); map.put…...

一个Linux自动备份脚本的示例

一个简单的Linux自动备份脚本的示例&#xff0c;根据需要进行自定义&#xff1a; 请确保按照您的需求修改source_dir和backup_dir为要备份的源目录和备份目录的路径。此脚本使用tar命令创建一个以当前日期命名的压缩备份文件&#xff0c;并在备份完成后检查是否成功。此外&…...

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址&#xff1a;PV-RCNN 论文代码&#xff1a;PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…...

测试老鸟整理,Postman加密接口测试-Rsa/Aes对参数加密(详细总结)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一些问题 postma…...

JavaScript使用对象

对象(object)是最基本、最通用的类型&#xff0c;具有复合性结构&#xff0c;属于引用型数据&#xff0c;对象的结构具有弹性&#xff0c;内部的数据是无序的&#xff0c;每个成员被称为属性。在JavaScript中&#xff0c;对象是一个泛化的概念&#xff0c;任何值都可以转换为对…...

微带线的ABCD矩阵的推导、转换与级联-Matlab计算实例

微带线的ABCD矩阵的推导、转换与级联-Matlab计算实例 散射参数矩阵有实际的物理意义&#xff0c;但是其无法级联计算&#xff0c;但是ABCD参数和传输散射矩阵可以级联计算&#xff0c;在此先简单介绍ABCD参数矩阵的基本用法。 1、微带线的ABCD矩阵的推导 其他的一些常用的二端…...

“网站不安全”该如何解决

当我们的网站被客户访问的时候&#xff0c;经常会出现提示不安全的情况&#xff0c;导致客户的不信任&#xff0c;从而出现客户流失的现象&#xff0c;这种情况我们应该如何解决呢&#xff1f; 首先&#xff0c;我们要确定网站会出现不安全的原因&#xff0c;一般来说&#xff…...

gitlab数据备份和恢复

gitlab数据备份 sudo gitlab-rake gitlab:backup:create备份文件默认存放在/var/opt/gitlab/backups路径下&#xff0c; 生成1697101003_2023_10_12_12.0.3-ee_gitlab_backup.tar 文件 gitlab数据恢复 sudo gitlab-rake gitlab:backup:restore BACKUP1697101003_2023_10_12_…...

嵌入式Linux和stm32区别? 之间有什么关系吗?

嵌入式Linux和stm32区别? 之间有什么关系吗&#xff1f; 主要体现在以下几个方面&#xff1a; 1.硬件资源不同 单片机一般是芯片内部集成flash、ram&#xff0c;ARM一般是CPU&#xff0c;配合外部的flash、ram、sd卡存储器使用。最近很多小伙伴找我&#xff0c;说想要一些嵌…...

【Redis】String字符串类型-内部编码使用场景

文章目录 内部编码使用场景缓存功能计数功能共享会话手机验证码 内部编码 字符串类型的内部编码有3种&#xff1a; int&#xff1a;8个字节&#xff08;64位&#xff09;的⻓整型&#xff0c;存储整数embstr&#xff1a;压缩字符串&#xff0c;适用于表示较短的字符串raw&…...

电脑发热发烫,具体硬件温度达到多少度才算异常?

环境&#xff1a; 联想E14 问题描述&#xff1a; 电脑发热发烫,具体硬件温度达到多少度才算异常? 解决方案&#xff1a; 电脑硬件的温度正常范围会因设备类型和使用的具体硬件而有所不同。一般来说&#xff0c;以下是各种硬件的正常温度范围&#xff1a; CPU&#xff1a;正…...

计算机网络第4章-IPv6和寻址

IP地址的分配 为了获取一块IP地址用于一个组织的子网内&#xff0c;于是我们向ISP联系&#xff0c;ISP则会从已分给我们的更大 地址块中提供一些地址。 例如&#xff0c;ISP也许已经分配了地址块200.23.16.0/20。 该ISP可以依次将该地址块分成8个长度相等的连续地址块&…...

Lazarus安装和入门资料

azarus-2.2.6-fpc-3.2.2-win64 下载地址 Lazarus 基础教程 - Lazarus Tutorials for Beginners Lazarus Tutorial #1 - Learning programming_哔哩哔哩_bilibili https://www.devstructor.com/index.php?pagetutorials Lazarus是一款开源免费的object pascal语言RAD IDE&…...

mediapipe流水线分析 二

目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 &#xff0c;该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…...

1.性能优化

概述 今日目标&#xff1a; 性能优化的终极目标是什么压力测试压力测试的指标 性能优化的终极目标是什么 用户体验 产品设计(非技术) 系统性能(快&#xff0c;3秒不能更久了) 后端&#xff1a;RT,TPS,并发数 影响因素01&#xff1a;数据库读写&#xff0c;RPC&#xff…...

使用Plsql+oracle client 连接 Oracle数据库

2011年入职老东家X煤集团的时候&#xff0c;在csnd上写了一篇blog&#xff0c;题目叫“什么是ERP”&#xff0c;从此跳入DBA了这个烂坑&#xff0c;目前公司的数据库一部分是Oracle&#xff0c;另一部分是MySQL的&#xff0c;少量MSSQL&#xff0c;还需要捡起来一部分&#xff…...

centos获取服务器公网ip

查看公网IP 用下面几个命令&#xff1a; #curl ifconfig.me #curl icanhazip.com #curl cip.cc...

思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布

大模型技术正在引领新一轮工业革命&#xff0c;但将其应用于工业制造&#xff0c;仍面临许多挑战&#xff0c;专业知识的缺乏是关键难点。11月5日&#xff0c;香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…...

Wsl2 Ubuntu在不安装Docker Desktop情况下使用Docker

目录 1. 前提条件 2.安装Distrod 3. 常见问题 3.1.docker compose 问题无法使用问题 3.1. docker-compose up报错 参考文档 1. 前提条件 win10 WSL2 Ubuntu(截止202308最新版本是20.04.xx) 有不少的博客都是建议直接安装docker desktop&#xff0c;这样无论在windows…...

pytorch之relu激活函数

目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU&#xff08;Rectified Linear Unit&#xff09;是一种常用的神经网络激活函数&#xff0c;它在PyTorch中被广泛使用。ReLU函数接受一个输入值&#xff0c;如果该值大于零&#xff0c;则返回该…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...