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

Map排序

(一)treeHap

特点:treeMap中的元素根据键的大小自然排序(默认是升序)

1、treeHap遍历测试

import java.io.IOException;
import java.util.*;
public class Main {public static void main(String[] args)throws IOException {Map<String,Integer>map=new TreeMap<>();map.put("b",2);map.put("c",1);map.put("d",3);map.put("a",1);for(Map.Entry<String,Integer> entry:map.entrySet()){System.out.println(entry.getKey()+" "+entry.getValue());}}
}

输出:

a 1

b 2

c 1

d 3

2、自定义排序方式测试

自定义排序,选择value的大小作为比较依据。

import java.io.IOException;
import java.util.*;
public class Main {public static void main(String[] args)throws IOException {Map<String,Integer>map=new TreeMap<>();map.put("b",2);map.put("c",1);map.put("d",3);map.put("a",1);List<Map.Entry<String,Integer>>list=new ArrayList<>(map.entrySet());//排序之前System.out.println("排序之前:");for (int i = 0; i < list.size(); i++) {String key=list.get(i).getKey();int value=list.get(i).getValue();System.out.println(key+" "+value);}//排序list.sort(new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {return o1.getValue()-o2.getValue();//o1减o2是升序,反之是降序}});//排序之后System.out.println("排序之后:");for (int i = 0; i < list.size(); i++) {String key=list.get(i).getKey();int value=list.get(i).getValue();System.out.println(key+" "+value);}}
}

输出:

排序之前:

b 2

c 1

a 1

d 3

排序之后:

a 1

c 1

b 2

d 3

测试结果,先根据value大小进行升序排序,value相等则根据key排序

(二)LinkedHashMap

(1)LinkedHashMap遍历测试

import java.io.IOException;
import java.util.*;
public class Main {public static void main(String[] args)throws IOException {Map<String,Integer>map=new LinkedHashMap<>();map.put("b",2);map.put("c",1);map.put("d",3);map.put("a",1);for(Map.Entry<String,Integer> entry:map.entrySet()){System.out.println(entry.getKey()+" "+entry.getValue());}}
}

输出:

b 2

c 1

d 3

a 1

(2)自定义排序测试

自定义排序,选择value的大小作为比较依据。

import java.io.IOException;
import java.util.*;
public class Main {public static void main(String[] args)throws IOException {Map<String,Integer>map=new LinkedHashMap<>();map.put("b",2);map.put("c",1);map.put("a",1);map.put("d",3);List<Map.Entry<String,Integer>>list=new ArrayList<>(map.entrySet());//排序之前System.out.println("排序之前:");for (int i = 0; i < list.size(); i++) {String key=list.get(i).getKey();int value=list.get(i).getValue();System.out.println(key+" "+value);}//排序list.sort(new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {return o1.getValue()-o2.getValue();//o1减o2是升序,反之是降序}});//排序之后System.out.println("排序之后:");for (int i = 0; i < list.size(); i++) {String key=list.get(i).getKey();int value=list.get(i).getValue();System.out.println(key+" "+value);}}
}

输出:

排序之前:

b 2

c 1

a 1

d 3

排序之后:

c 1

a 1

b 2

d 3

测试结果是,先根据value大小进行升序排序,value相等则根据元素的添加先后顺序排序

(三)小结

  1. TreeMap可以实现根据key的大小自动进行升序排序。对其按照value的大小实现自定义排序时,会先先根据value的大小进行排序,value相等则根据key的大小排序
  2. LinkedHashMap中的元素会自动按照添加的先后顺序进行排序。对其按照value的大小实现自定义排序时,会先先根据value的大小进行排序,value相等则根据元素的添加先后顺序排序

补充:HashMap中的元素是无序的(不按照添加顺序输出,也不按照key的自然排序输出)。

相关文章:

Map排序

(一&#xff09;treeHap 特点&#xff1a;treeMap中的元素根据键的大小自然排序&#xff08;默认是升序&#xff09; 1、treeHap遍历测试 import java.io.IOException; import java.util.*; public class Main {public static void main(String[] args)throws IOException {…...

mycat读写分离

1.准备工作 tar包 http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip jar包 http://dl.mycat.org.cn/2.0/1.21-release/ (下载最新的jar包) 将下载好的jar放到tar中的lib目录下并放入linux系统中 2.创建逻辑库 连接mycat端口8066 账号root 密码12…...

[Linux]环境变量

目录 基本概念 常见的环境变量 PATH测试 HOME测试 SHELL测试 和环境变量相关的命令 main函数的三个参数 环境变量的组织方式 通过代码如何获取环境变量 通过系统调用获取或设置环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系…...

次优二叉查找树(次优查找树)_递归和非递归实现_20230414

次优二叉查找树&#xff08;次优查找树)-递归和非递归实现 前言 当有序表中的各记录的查找概率相等的时候&#xff0c;采用折半查找效率可以提升查找性能&#xff1b;如果有序表中的各记录的查找概率不相等&#xff0c;那么折半查找就不再适用。 如果只考虑查找成功的情况&a…...

贯穿设计模式第八话--设计原则总结篇

&#x1f973;&#x1f973;&#x1f973; 茫茫人海千千万万&#xff0c;感谢这一刻你看到了我的文章&#xff0c;感谢观赏&#xff0c;大家好呀&#xff0c;我是最爱吃鱼罐头&#xff0c;大家可以叫鱼罐头呦~&#x1f973;&#x1f973;&#x1f973; 从今天开始&#xff0c;将…...

地理信息系统(ArcGIS)在水文水资源、水环境中的实践技术应用及案例分析

目录 专题一 ArcGIS&#xff1a;数据管理 专题二 ArcGIS&#xff1a;数据转换 专题三 ArcGIS&#xff1a;地图制作 专题四 水文水环境数据编辑与管理 专题五 水文水环境数据处理与分析 专题六 ArcGIS水文分析及流域特征提取 专题七 湖泊水库水环境监测及评价 专题八 河…...

部分国产水文水动力模型介绍

一、HydroMPM模型 1、模型介绍 2016年度自立项目HydroMPM系统开发与集成完成的洪水分析模拟软件等成果经权威专家鉴定整体达到国际领先水平&#xff0c;HydroMPM_FloodRisk入选国家防总《全国重点地区洪水风险图编制项目可选软件名录》。成果应用项目100余项&#xff0c;累计…...

HTTP请求

1、get请求工具类 public static String requestGet(String url) throws Exception { String strResult null; try { HttpClient httpsClient HttpsClient.getInstance(); HttpGet request new HttpGet(url); HttpResponse response http…...

网络威胁情报项目:为什么仍然很疯狂

大约五年前&#xff0c;向首席信息安全官&#xff08; CISO&#xff09;询问他们的网络威胁情报 (CTI) 计划时&#xff0c;得到了两种截然不同的回答。 资源丰富的大型企业正在投资他们的威胁情报计划&#xff0c;目的是为了战术、运营和战略目的更好地实施它。 规模较小、资…...

Linux系统下使用shell“多线程执行命令”

前言 在工作中常遇到如下场景&#xff1a; 系统未接入日志中心&#xff0c;系统本身使用集群部署&#xff0c;那么再查找日志的时候只能一台一台的去搜索关键字&#xff0c;后来运维同学发现这样一台一台效率太低了&#xff0c;于是有了升级版&#xff0c;升级之后的方式还是一…...

HighTec编译器错误记录

目录 1、HighTec安装后缺少Universal Debug Engine 2、HighTec工程改名后不能跳转函数定义&#xff0c;提示找不到定义。 3、HighTec工程重复编译 1、HighTec安装后缺少Universal Debug Engine 在HighTec安装后&#xff0c;没有调试UDE&#xff0c;重装系统后还是没有&#x…...

智慧校园大数据云平台(3)

技术详解 OTN技术OTN是以波分复用技术为基础、 在光层组织网络的传送网&#xff0c; 是下一代的骨干传送网。OTN是通过G.872、G.709、G.798等一系列ITU-T的建议所规范的新一代“数字传送体系”和“光传送体系”&#xff0c;将解决传统WDM网络无波长/子波长业务调度能力差、组网…...

《花雕学AI》15:BingGPT桌面端——尝鲜体验ChatGPT4.0同源技术新Bing的最新成果

引言&#xff1a; 本文将介绍 BingGPT桌面端的开发背景和目的&#xff0c;以及它与新 Bing 的关系和区别。本文还将说明BingGPT桌面端的主要功能和特点&#xff0c;以及如何下载、安装和使用。最后&#xff0c;本文将评价 BingGPT桌面端对于新 Bing 的人工智能聊天功能的推广和…...

反序列化漏洞及PHP魔法函数

目录 1、漏洞原理 2、序列化&#xff08;以PHP语言为例&#xff09; 3、反序列化 4、PHP魔法函数 &#xff08;1&#xff09;__wakeup() &#xff08;2&#xff09;__destruct() &#xff08;3&#xff09;__construct() &#xff08;4&#xff09;__toString() &…...

企业应用程序单点登录

企业每天都依赖于各种企业应用程序&#xff0c;包括云和本地应用程序。这意味着用户必须经常输入更多密码才能访问这些应用程序并完成他们的工作。为了提高用户的工作效率、减少密码疲劳并使身份管理更有效&#xff0c;您的组织需要部署高效的 SSO 解决方案。 AD360 提供企业 …...

前馈PID控制(热交换器/反应釜温度控制)

如何利用PID进行温度控制请参看下面博客文章: 博途PID 1200/1500PLC PID_Compact比例作用权重b微分作用权重c解读(PI-D控制器 I-PD控制器)_RXXW_Dor的博客-CSDN博客很多人会问PLC自带的PID指令和我们自己设计的PID有什么区别,这个问题要看你和什么PID控制器作对比,PID负反…...

Nginx配置ssl证书实现https安全访问

目录 一、Nginx的安装与配置 安装步骤 二、SSL证书获取 三、Nginx配置 前题条件&#xff0c;拥有服务器与可以解析到该服务器的自己的域名。 一、Nginx的安装与配置 若已安装好了Nginx&#xff0c;则需查看自己的Nginx是否开启了SSL的模块功能&#xff1a; ./nginx -V 显…...

大学生必备神器

大学生要掌握的办公软件因专业和工作需求而异&#xff0c;但是以下是一些普遍适用于大学生的办公软件&#xff0c;可以帮助提高学习和工作效率&#xff0c;今天就给大家推荐几款大学生常用的软件。 1.OneDrive 这是微软出品的云存储产品&#xff0c;与百度网盘有些类似&#…...

【MyBatis Plus】004 -- MyBatis Plus高级(AR、MP插件、自定义全局操作、自动填充、逻辑删除、枚举、代码生成器)

目录 1、ActiveRecord 1.1 开启AR之旅&#xff08;根据主键 id 进行查询&#xff09; 1.2 新增数据 1.3 更新操作 1.4 删除操作 1.5 根据条件查询 2、Oracle 主键 Sequence 2.1 部署Oracle环境 2.2 创建表以及序列 2.3 jdbc驱动包 2.4 修改application.properties 2.5 配置序列…...

3年外包终上岸,我只能说:但凡有点机会,千万别去外包...

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司的软件测试岗&#xff0c;一干就是3年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&am…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...