Map的排序

  今天工作中需要用到一个保持插入顺序的键值对的数据结构。遂想到了Map中的 JDK中map的LinkedHashMap 能满足需要。顺便做了下面的整理。

 

   排序都是依据key来排序的。如果要依据Value来排序,需要自己来实现相关的Map类,有兴趣的可以试试看。

 

   LinkedHashMap 会保持插入时候的顺序,但是相同的key插入多次,默认以第一次插入的顺序为准,除非将accessOrder设置为true,则以最后一次插入的顺序为准

           LinkedHashMap<String,String> map=new LinkedHashMap<String,String>();
	    map.put("abc", "11");
	    map.put("bbc", "11");
	    map.put("cac", "11");
	    map.put("dbc", "11");
	    map.put("aba", "11");
	    
	    for(Map.Entry<String, String> entry:map.entrySet()){
	        System.out.println(entry.getKey() +" : "+entry.getValue());
	    }

   结果:

  abc : 11

  bbc : 11

  cac : 11

  dbc : 11

  aba : 11

 

   HashMap不保证映射的顺序,特别是它不保证该顺序恒久不变

           HashMap<String,String> map=new HashMap<String,String>();
	    map.put("abc", "11");
	    map.put("bbc", "11");
	    map.put("cac", "11");
	    map.put("dbc", "11");
	    map.put("aba", "11");
	    
	    for(Map.Entry<String, String> entry:map.entrySet()){
	        System.out.println(entry.getKey() +" : "+entry.getValue());
	    }

   结果:

   aba : 11

   cac : 11

   dbc : 11

   abc : 11

   bbc : 11

 

   TreeMap如果不实现自定义的Comparator接口,则按照自然顺序进行排序。内部基于红黑树的数据结构实现。

    

           TreeMap<String,String> map=new TreeMap<String,String>();
	    map.put("abc", "11");
	    map.put("bbc", "11");
	    map.put("cac", "11");
	    map.put("dbc", "11");
	    map.put("aba", "11");
	    
	    for(Map.Entry<String, String> entry:map.entrySet()){
	        System.out.println(entry.getKey() +" : "+entry.getValue());
	    }

   结果:

   aba : 11

   abc : 11

   bbc : 11

   cac : 11

   dbc : 11

 

   

 TreeMap<String,String> map=new TreeMap<String,String>(new Comparator<String>(){

            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
	    });
	    map.put("abc", "11");
	    map.put("bbc", "11");
	    map.put("cac", "11");
	    map.put("dbc", "11");
	    map.put("aba", "11");
	    
	    for(Map.Entry<String, String> entry:map.entrySet()){
	        System.out.println(entry.getKey() +" : "+entry.getValue());
	    }

    结果:

    dbc : 11

cac : 11

bbc : 11

abc : 11

aba : 11

 

对map集合进行排序的方法 在做统计时需要对X轴的月份按照时间的先后进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序。 一、简单的map介绍 在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有 阅读详情

相关推荐

JDK8 之 Map 排序

JDK8 之 Map 排序 public class MapUtil { /** * JDK8 * 按照Key排序 * * @param map map数据 * @param asc 是否升序 * @param <K> Key * @param <V> Value * @return ...

阿拉丁省油的灯的博客 1336

分析排序的Map: TreeMap 和 LinkedHashMap

TreeMap: 一种键值按照自然顺序排序的Map,底层保证有序的结构是红黑树 自然排序:基本数据类型会按照ASCII码表排序,String类会按照字典序排序。 也可以自己自定义排序,看TreeMap的构造函数 public TreeMap(Comparator<? super K> comparator) { this...

weixin_39634532的博客 478

Java中实现Map按值排序的多种方法

本文还有配套的精品资源,点击获取 简介:Java的Map接口默认不保证元素的顺序。本文介绍如何使用TreeMap、Collections.sort()结合Entry、Stream API以及Guava库等技术手段实现Map按值排序。每种方法都有其特点,例如TreeMap提供自然排序,而Stream API则在Java 8中提供了更为简洁的方式。在选择具体方法时应考虑项目的具...

weixin_32445049的博客 5317

Map——自然排序与插入排序创建方式

Map两种创建方式

qq_36941968的博客 874

Circos在Windows下的安装教程

这里写自定义目录标题Circos简介安装Perl 的安装Circos安装安装及解压安装Modules测试用例官方文档 Circos简介 (来源官网:http://circos.ca/software/readme/ O.INTRODUCTION部分) Circos is a program for the generation of publication-quality, circularly composited renditions of genomic data and related annot

qq_42318911的博客 1661

单片机技术入门与实战:从零基础到项目开发

单片机(MCU)作为嵌入式系统的核心组件,集成了CPU、内存和各种接口电路,广泛应用于智能家居、工业控制和汽车电子等领域。其工作原理基于实时控制和低功耗设计,通过定时器、中断系统和通信接口等功能模块实现各种控制任务。在物联网和智能硬件快速发展的背景下,掌握单片机开发技术成为电子工程师的重要技能。本文以STM32和PIC系列为例,详细解析单片机的基本概念、功能模块和选型指南,并分享从入门到项目实战的系统学习方法,帮助开发者在3-6个月内快速掌握这一关键技术。

weixin_35753291的博客 653

把HashMap按照key的自然顺序排序

/** * Map按key进行排序 * * @param map * @return */ public static Map<String, String> sortMapByKey(Map<String, String> map) { if (map == null || map.isEmpty()) {

zfc_luck的专栏 2452

ThinkBook 16 2024 Ubuntu驱动全攻略:从无线网卡到触控板

本文详细介绍了ThinkBook 16 2024在Ubuntu系统下的驱动问题解决方案,涵盖无线网卡、蓝牙、显卡和触控板等关键硬件的驱动修复步骤。通过具体命令和配置指南,帮助用户快速解决兼容性问题,提升Ubuntu在ThinkBook上的使用体验。

weixin_29200741的博客 829

map排序方法_Java集合(2) Map

Map00Map是什么Map 是一种键-值对(key-value)集合的接口,Map 类集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类...

weixin_39830225的博客 245

使用 Cynthion 与 Packetry 进行 USB 抓包与协议分析

Cynthion 是 Great Scott Gadgets 推出的USB 流量分析与注入设备。它具备以下特点:通过 FPGA 实现高速 USB 流量捕获;能够同时作为 USB Host 和 Device,进行调试和测试;支持输出 pcap 文件,可直接用 Wireshark 分析;提供 Python API,方便与上层软件联动。简单来说,Cynthion 是一个USB 协议分析仪 + 注入工具。硬件层捕获:实时拦截 USB 总线上的数据包;软件层解析。

YIMUleizi的博客 1264

esim分布式云卡池技术

eSIM卡,即Embedded-SIM,嵌入式SIM卡。eSIM卡的概念就是将传统SIM卡直接嵌入到设备芯片上,而不是作为独立的可移除零部件加入设备中,用户无需插入物理SIM卡。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁设备、购买新设备的前提下随时更换运营商。未来通用的eSIM标准建立将为普通消费者、企业用户节省更多移动设备使用成本,并带来更多的便利、安全性。 2018年 3月7日,中国联通宣布,正式在上海、天津、广州、深圳、郑州、长沙6座城市率先启动“eSIM一号双终端”业务的办理。[.

著名博客 3708

JS Map对象排序

JS 中Map对象会按照元素的写入顺序来保存,有时我们想对Map中的对象进行排序应该怎么做呢?参考别人的回答这里做一个小小的总结; 假如有以下map var map=new Map(); map.set("b","8"); map.set("c","10"); map.set("a","1"); map.set("d","7"); map.set("e","3"); 现在想根据v...

3万+

深度学习二分类实战:用Python+Keras搞定基因表达数据预测(附完整代码)

本文详细介绍了如何使用Python和Keras构建深度学习模型进行基因表达数据的二分类预测。通过数据预处理、特征选择、神经网络构建及优化策略,特别针对小样本场景提供了调参技巧和模型解释方法。文章还包含完整的代码示例,帮助读者快速掌握深度学习在生物信息学中的应用。

weixin_30642561的博客 245

java如何对Map进行排序

Map排序(按key排序,按value排序) 主要分两种,按键排序、按值排序。 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用。 一、按键排序 按Key排序主要用于TreeMap,可以实现按照Key值的大小,在对象插入时直接插入到合适的位置,保持Map的顺序性。 来看TreeMap的构造函数:TreeMap(Comparator<? super K> comparator):构造一个新的、空的树映射,该映射根据给定比较器进行排序。 这里的比较器是key的比

m0_51051154的博客 2万+

MTK Meta ISP 工具使用技巧与参数读取路径全解析

在联发科(MediaTek, MTK)平台上进行相机图像调试时,Meta ISP 工具是连接 PC 与设备进行参数调整、寄存器读取和图像输出的重要工具。本文以实战角度出发,系统梳理 Meta ISP 的使用流程、关键模块功能、典型调试技巧与参数读取路径,结合最新版平台(如MTK Genio/Dimensity 系列)架构,帮助工程师掌握联发科图像调优的核心流程。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1148

高通Camx功能feature分析之一:remosaic功能导通

本文详细介绍了S5K3P9S传感器前置场景中SW Remosaic功能的实现流程。首先需在sensorxml中确认支持SW Remosaic类型,并集成remosaic相关库文件(libremosaic_wrapper.so等)。核心实现包括:初始化阶段调用InitFrontSamsungRemosaic();执行线程DeferFrontInitThread()读取校准数据;通过DoSamsungRemosaic()执行remosaic算法处理;最后在析构函数中调用DeinitFrontSamsungRem

1700

java中对Map进行排序的方法

java中经常排序,但是自己对Map的排序方法一直不是很清楚,特此记录。 Map作为键值对的存储工具,基本的概念介绍网上都有,自己参考如下博客: https://www.cnblogs.com/chenssy/p/3264214.html 简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable...

liu_12345_liu的博客 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

map集合排序

原文链接:https://www.cnblogs.com/chenssy/p/3264214.html 今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序。 一、简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包...

从放弃到开始 5301

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

map的排序

1.按key值排序 (第一个值,即&lt;key,value&gt;中的key值) 为了实现快速查找,map内部本身就是按序存储的(比如红黑树)。在我们插入&lt;key, value&gt;键值对时,就会按照key的大小顺序进行存储,其中key的类型必须能够进行 &lt; 运算,且唯一,默认排序是按照从小到大便于记忆,可以联想到需要支持小于运算。 map的模板定义如下 template &lt;...

birdmanqin的博客 5433

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Map排序——按key排序,按value排序

注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有没有类似的自定义排序方法呢?当然是有的,主要分两种,按键排序、按值排序。 而且,按key排序主要用于TreeMap,而按value排序则对于Map的子类们都适用。 一、...

a631278993的博客 1958

JAVA map排序实现

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。 1、按键排序 jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法TreeMap(Comparator<? super K> comparator) 传入我们自定义的比较器即可实...

王文萱的博客 4万+

c++对map进行排序

另一方面,如果我们想把所有同学和他相应的成绩都输出来,并且按照我们想要的顺序进行输出:比如按照学生姓名的顺序进行输出,或者按照学生成绩的高低进行输出。本文对这两种排序进行一个简单的总结。第一反应是利用STL中提供的sort算法实现,这个想法是好的,不幸的是,sort算法有个限制,利用sort算法只能对序列容器进行排序,就是线性的(如vector,list,deque)。**思路2:**可以把map中的key值和value值分别转存到一个pair类型的vector中,在对vector按照一定的规则排序即可。.

m0_67392811的博客 5169

排序之Map集合根据Map里的value排序

map集合根据value排序 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class java_ListMapSort { public static void main(String[] args) {

xy405580364的博客 1331

Go map切片及map排序

map切片 基本介绍 切片的数据类型如果是 map,则我们称为 slice of map,map 切片,这样使用则 map 个数就可以动态变化了。 案例演示 要求:使用一个 map 来记录 monster 的信息 name 和 age, 也就是说一个 monster 对应一个 map,并且妖怪的个数可以动态的增加=>map 切片 //1. 声明一个map切片 var monsters []map[string]string monsters = make([]map[string

baidu_41388533的博客 969
上一篇: java并发 CompletionService (八)
下一篇: linux下日志分析常用命令总结sort,uniq,head
liyebing
博客等级 码龄20年 32粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值