Java Map 按Key排序和按Value排序

基于MATLAB的拉盖尔-高斯光束叠加相位模拟 首先,我们需要设置模拟所需的参数,如光腰半径、传播距离、光束的角动量等。其中,(U)表示光束的电场复振幅,(r)和(\phi)分别是极坐标系下的径向和角向坐标,(z)是传播距离,(A)是归一化系数,(w_p)是光束的光腰半径,(L_p^q)是拉盖尔多项式,(k)是波数,(l)是光束的角动量。通过修改模拟参数,如光腰半径、传播距离、角动量等,您可以进一步探索和理解拉盖尔-高斯光束的叠加相位效应。拉盖尔-高斯光束是一种特殊的光束模式,具有广泛的应用领域,包括光学信息处理、激光加工和量子光学等。 阅读详情

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。

1、按键排序

jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 TreeMap(Comparator<? super K> comparator)  传入我们自定义的比较器即可实现按键排序。

实现代码


 
  1. public class MapSortDemo {
  2. public static void main( String[] args) {
  3. Map< String, String> map = new TreeMap< String, String>();
  4. map.put( "KFC", "kfc");
  5. map.put( "WNBA", "wnba");
  6. map.put( "NBA", "nba");
  7. map.put( "CBA", "cba");
  8. Map< String, String> resultMap = sortMapByKey(map); //按Key进行排序
  9. for ( Map.Entry< String, String> entry : resultMap.entrySet()) {
  10. System.out.println(entry.getKey() + " " + entry.getValue());
  11. }
  12. }
  13. /**
  14. * 使用 Map按key进行排序
  15. * @param map
  16. * @return
  17. */
  18. public static Map< String, String> sortMapByKey( Map< String, String> map) {
  19. if (map == null || map.isEmpty()) {
  20. return null;
  21. }
  22. Map< String, String> sortMap = new TreeMap< String, String>(
  23. new MapKeyComparator());
  24. sortMap.putAll(map);
  25. return sortMap;
  26. }
  27. }

 

比较器类

 
  1. class MapKeyComparator implements Comparator<String>{
  2. @Override
  3. public int compare(String str1, String str2) {
  4. return str1.compareTo(str2);
  5. }
  6. }

 

2、按值排序

按值排序就相对麻烦些了,貌似没有直接可用的数据结构能处理类似需求,需要我们自己转换一下。
Map本身按值排序是很有意义的,很多场合下都会遇到类似需求,可以认为其值是定义的某种规则或者权重。

原理:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List<T> list, Comparator<? super T> c) 
来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。

实现代码

 


 
  1. public class MapSortDemo {
  2. public static void main( String[] args) {
  3. Map< String, String> map = new TreeMap< String, String>();
  4. map.put( "KFC", "kfc");
  5. map.put( "WNBA", "wnba");
  6. map.put( "NBA", "nba");
  7. map.put( "CBA", "cba");
  8. Map< String, String> resultMap = sortMapByKey(map); //按Key进行排序
  9. // Map<String, String> resultMap = sortMapByValue(map); //按Value进行排序
  10. for ( Map.Entry< String, String> entry : resultMap.entrySet()) {
  11. System.out.println(entry.getKey() + " " + entry.getValue());
  12. }
  13. }
  14. /**
  15. * 使用 Map按value进行排序
  16. * @param map
  17. * @return
  18. */
  19. public static Map< String, String> sortMapByValue( Map< String, String> oriMap) {
  20. if (oriMap == null || oriMap.isEmpty()) {
  21. return null;
  22. }
  23. Map< String, String> sortedMap = new LinkedHashMap< String, String>();
  24. List< Map.Entry< String, String>> entryList = new ArrayList< Map.Entry< String, String>>(
  25. oriMap.entrySet());
  26. Collections.sort(entryList, new MapValueComparator());
  27. Iterator< Map.Entry< String, String>> iter = entryList.iterator();
  28. Map.Entry< String, String> tmpEntry = null;
  29. while (iter.hasNext()) {
  30. tmpEntry = iter.next();
  31. sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
  32. }
  33. return sortedMap;
  34. }
  35. }

 

比较器类

 


 
  1. class MapValueComparator implements Comparator<Map.Entry<String, String>> {
  2. @Override
  3. public int compare(Entry<String, String> me1, Entry<String, String> me2) {
  4. return me1.getValue().compareTo(me2.getValue());
  5. }
  6. }

 

转自:Java Map 按Key排序和按Value排序 

LLC谐振变换器软启动,不只是“慢启动”,还是“智能启动” LLC谐振变换器的软启动,不只是“慢慢来”,而是要在控制时序、限流、响应速度之间精妙权衡。而数字控制,特别是用查表法或混合信号法,为实现真正的“最佳轨迹”提供了可能。✨小Tips:如果你的系统成本敏感,选择查表法准没错;如果你的设计目标是超高速响应,那就上混合信号的高配方案! 阅读详情

相关推荐

【嵌入式Linux】EC20模块多运营商自适应PPP拨号实战:从IMSI识别到网络配置

本文详细介绍了在嵌入式Linux系统中,如何基于EC20 4G模块实现多运营商自适应PPP拨号。通过解析SIM卡的IMSI识别运营商,并动态配置对应的APN和拨号参数,结合AT指令交互与健壮的pppd脚本,解决了设备跨地域部署时的网络自动连接问题,提升了物联网设备的部署效率和稳定性。

fox11的博客 902

Map根据value的值进行排序(简单易懂)

Map根据value的值进行排序(简单易懂) 1、将Map的entrySet转换为List 2、用Collections工具类的sort方法排序 3、遍历排序好的list,将每组key,value放进LinkedHashMap(Map的实现类只有LinkedHashMap是根据插入顺序来存储) public static Map<String, Integer> sortMap(Map<String, Integer> map) { //利用Map的entrySet方

Mr_Newbie的博客 3万+

ptrade量化策略之沪深300指数增强

本策略的核心是在沪深300股票池中选股,选择的股票都是市值比较大,业绩比较好的白马股,根据市场相对位置以及基本面因子来选择股票

qq_29301281的博客 1191

Java中的Map集合如何根据key值排序?

Java中的Map集合如何根据key值排序(HashMap)?

Rcain_R的博客 1万+

华为OD机试双机位C卷-字符串解密(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【字符串解密】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 字符串解密。

qq_45776114的博客 733

HFSS实战项目——Ku波段微带发夹线滤波器

保姆级教程!!!看完必会,非常详细!!!Ku频段5阶切比雪夫微带线带通滤波器的仿真实例。首先介绍了滤波器的技术指标和基本理论知识,重点介绍了滤波器的耦合系数和外部品质因数。建立了谐振器的设计模型、耦合系数与谐振器间距的设计模型、外部品质因数与抽头位置的设计模型和滤波器整体电路的模型。详细介绍了谐振器设计模型的建立步骤。

2401_87464239的博客 3041

根据map的key进行排序

1 升序排序 Map.Entry.comparingByKey() Map<LocalDateTime, List<ExerciseReport>> twelveReportMap = twelveReportDataList.stream() .collect(Collectors.groupingBy(ExerciseReport::getCreateDate)); System.out.println(

爪哇人的博客 1万+

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

data+scenario+science+insight 835

Map根据key排序

Map根据key排序按月份将List进行分组,再排序 按月份将List进行分组,再排序 Map<String, List<PrsCalcData>> result = data.stream().collect(Collectors.groupingBy(PrsCalcData::getSmo)); //注意此处的key是string类型,"11"比"2"小 Map<String,List<PrsCalcData>> smoMap = result

tsx668899的博客 1万+

Windows环境下Ollama的本地部署方案

本文主要介绍了Windows环境下Ollama的本地部署方案,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. Windows环境安装 3. API调用示例代码

herosunly的博客 11万+

把 sy-* 带进 ABAP CDS:ABAP 7.50 里的环境信息新姿势($session 与 @Environment.systemField 实战)

摘要:ABAP 7.50在CDS视图中引入两种获取环境信息的方式:1)直接使用$session会话变量读取用户、客户端和系统语言;2)通过@Environment.systemField注解参数,由Open SQL自动注入系统字段。$session方式简单但依赖Open SQL访问路径,非ABAP环境下可能失效;注解参数方案更工程化,依赖关系明确且支持测试。建议ABAP体系内优先使用$session,对外接口采用参数化方案。两种方式各有适用场景,正确选择可避免潜在风险。(148字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 152

Java Map中数据按照key进行排序

方法一:  static String mapSortedByKey(Map&lt;String, String&gt; param) { StringBuilder stringBuilder = new StringBuilder(); ArrayList&lt;String&gt; keyList = new ArrayList&lt;&gt;(param...

m0_38129920的博客 2万+

DeFi核心协议代码解析

本文解析了DeFi两大核心协议Uniswap V2和Compound的智能合约架构与关键代码。Uniswap V2采用恒定乘积公式(x*y=k)实现自动做市,核心合约包括Factory、Pair和Router,具备流动性铸造、代币兑换和TWAP预言机功能。Compound借贷协议通过cToken合约管理存款和借款,采用动态利率模型和抵押率机制,包含资金利用率计算、清算触发等核心算法。两协议均采用模块化设计,通过智能合约实现去中心化金融服务的核心逻辑。

闲人编程的博客 935

java8 map根据key排序和根据value排序

1、根据key排序 Map<String,String> result = new HashMap<>(); Map<String,String> map = new HashMap<>(); map.entrySet().stream() .sorted(Map.Entry.comparingByKey()) .fo...

weixin_40841731的博客 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java Map排序——按key和按value

Map的排序分为按key排序和按value排序。这里讲讲这两种方法。

yuhentian的专栏 1156

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java map按照key排序_java Map排序(按key和按value)

1、按照key排序对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲。这种方案,使用hashmap进行创建和添加,如果需要按照key排序,则可以将该hashmap作为参数传递到new TreeMap(hashmap),则可以完成按照key的排序TreeMap treemap = new T...

weixin_35899665的博客 1万+

java8分别对于Map的key和value值进行排序

1、map 根据value排序 Map<String,BigDecimal> map =new HashMap<>(); map.put(“one”, 0.08); map.put(“two”, 0.1); map.put(“three”, 0.2); map.put(“four”, 0.91); 上面是项目中的一个中间结果,我们需要对这个map根据value值倒序排序,下...

程序员小王的博客 6085

Java Map 键值对排序 按key排序和按Value排序

一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。 ...

liaonanfeng88的优快云博客 1408

Java8 Map根据key排序和根据value排序

/ 注意:这里不能用HashMap存,HashMap的遍历顺序是随机的。// 注意:这里不能用HashMap存,HashMap的遍历顺序是随机的。// Collectors.toMap()默认是HashMap。// Collectors.toMap()默认是HashMap。

liudashao007的博客 2074

java map 按照key排序_Java Map 按Key排序和按Value排序

packagetest;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.List;importj...

weixin_28366353的博客 273

java8 stream 操作map根据key或者value排序

引言最近小编自己一个人在负责一个项目的后台开发,其中有一部分是统计相关的功能,所以需要一些排序或者分组的操作,之前这种操作小编觉得还是比较麻烦的,虽热有一些现成的工具类,但是工具类的写法也是比较复杂的,但是如果使用java8 stream流的话就比较简单了,并且代码量会大大的减少,下面总结几个对map的操作。1、map 根据value排序Map&lt;String,BigDecimal&gt; m...

Jack 架构师之路 4万+

java map按照key排序_Java Map 键值对排序 按key排序和按Value排序

一.理论准备Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。HashMap的值是没有顺序的,它是按照key...

weixin_28197941的博客 399

java 键值对 排序_Java Map 按key排序和按Value排序的实现方法

一、理论准备Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。HashMap的值是没有顺序的,它是按照key...

weixin_32143729的博客 727

java8对map集合排序,根据key或者value操作排序(升序、降序)

package com.drew.test; import java.util.List; import java.util.Map; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; /**...

qq_42647749的博客 4162

java Map 之 排序(key,value)

一:起因: (1)现实中需要Map容器进行排序的情况很多很多:因为Map键值对的存储结构特别是HashMap的结构是非常优秀的,数据存储就难免对其进行排序; (2)数据处理,只要用到映射关系的,离不开Map,这在数据处理中是非常实用的,而排序是对数据的进一步处理; (3)Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)

思緒凌亂 1万+

java 键值对 排序_Java Map 键值对排序 按key排序和按Value排序

Java Map 键值对排序 按key排序和按Value排序一.理论准备Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使...

weixin_39820437的博客 1030

Java Map按key排序和按value排序

一、Map的初始化 Map phone = new HashMap(); phone.put("zhang001", 75); phone.put("value001", 90); phone.put("zhang002", 80); phone.put("zhang003", 85); 二、按照key进行排序 ...

zhangvalue的博客 1904
下一篇: zookeeper+kafka集群搭建成功
javaMyGod
博客等级 码龄16年 38粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值