java如何对map进行排序详解(map集合的使用)

iPhoneX APP界面设计尺寸图-庞姿姿 ​​本篇分享的是iPhoneX APP界面设计尺寸图,有很多UI新手说起尺寸问题就脑壳疼,其实这并不复杂,下面就来说说iPhoneX APP界面设计尺寸规范,觉得有用的话可以收藏一下,用的时候翻出来看看。下面进入正题。 本篇分享iPhoneX APP界面设计尺寸图到这里就结束了,希望对你有所帮助如果你有什么问题可以随时留言评论,看到就会回复。我将不定时分享一些ps使用的小技巧,如果您想了解更多关于ps使用、平面设计、UI设计相关信息,请持续关注庞姿姿。​​​​ ... 阅读详情

今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序。

一、简单介绍Map

在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):

HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null。非同步的。

TreeMap: 能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

Hashtable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

 

二、Map排序

TreeMap

TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。

Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于、等于或者大于o2分别返回负整数、0或者正整数。如下:

复制代码 代码如下:


public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<String, String>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj2.compareTo(obj1);
                    }
                });
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "ddddd");

        Set<String> keySet = map.keySet();
        Iterator<String> iter = keySet.iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            System.out.println(key + ":" + map.get(key));
        }
    }
}

运行结果如下:

d:ddddd 
c:ccccc 
b:bbbbb 
a:aaaaa

上面例子是对根据TreeMap的key值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要 借助于Collections的sort(List<T> list, Comparator<? super T> c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较。如下:

复制代码 代码如下:


public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<String, String>();
        map.put("d", "ddddd");
        map.put("b", "bbbbb");
        map.put("a", "aaaaa");
        map.put("c", "ccccc");

        //这里将map.entrySet()转换成list
        List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
        //然后通过比较器来实现排序
        Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
            //升序排序
            public int compare(Entry<String, String> o1,
                    Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }

        });

        for(Map.Entry<String,String> mapping:list){ 
               System.out.println(mapping.getKey()+":"+mapping.getValue()); 
          } 
    }
}


运行结果

a:aaaaa 
b:bbbbb 
c:ccccc 
d:ddddd

HashMap

我们都是HashMap的值是没有顺序的,他是按照key的HashCode来实现的。对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序,我们一样的也可以实现HashMap的排序。

复制代码 代码如下:


public class HashMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "ddddd");

        List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
        Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
            //升序排序
            public int compare(Entry<String, String> o1,
                    Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }

        });

        for(Map.Entry<String,String> mapping:list){ 
               System.out.println(mapping.getKey()+":"+mapping.getValue()); 
          } 
     }
}

运行结果

a:aaaaa 
b:bbbbb 
c:ccccc 
d:ddddd

List<Map<String, Object>>——多层嵌套的数据结构 文章目录快速理解多重嵌套结构Map基础知识List例子查询数据库 快速理解多重嵌套结构 对于多层嵌套的数据结构,需要层层分解。 以List<Map<String, Object>>为例,首先可以看到两种结构,分别是List和Map。 可以观察到List在外层,用c语言做类比,可以看做是一个指针数组,指针数组,其实就是一个元素为指针的数组。 那么回到这个例子,List<Map<String, Object>>不就是元素为Map的List吗?即List集合中的对象是一个Map对象,而这个Map对象的键是Stri 阅读详情

相关推荐

java LIst<Map>集合按照某个map的某一列排序

按照某个map的某一列排序场景代码rankingUtil实际场景根据实际情况,这里只做记录参考 场景代码 public List<Map> listDeptTaskCompletionRate(MobileTaskCondition condition) { List<Map> listDeptTaskCompletionRate = null; ...

JSF的博客 1093

各种Map的区别,想在Map放入自定义顺序的键值对

今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序。 一、简单介绍Map在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍): ...

weixin_33854644的博客 1139

Java Map集合排序:方法与实践

Override// 降序排列});输出将会是:在这个例子中,我们通过传递一个Comparator来定义键的排序规则,使得键按照降序排列。这是通过比较器中使用实现的。要使用Comparator接口进行自定义排序,首先需要创建一个实现了Comparator接口的类。下面是在Java中创建Comparator类的基本步骤:定义类并实现Comparator接口创建一个类,并让这个类实现Comparator接口。这意味着类需要实现方法。

weixin_35756637的博客 521

List<Map> 排序

原因:项目中遇到去数据库查数据,有额日期是有数据的,有的日期没有数据,所以这需要后端补全日期 直接上代码: List<Map<String,Object>> result = new ArrayList<>(); Map<String,Object> map; map = new HashMap<>(); map.put("date",2020112700); map.put("n

qq_37962402的博客 1万+

List<map>多字段组合排序

List,List<Map>,多字段组合排序。提供一个简易的思路,如果需要进行参考。

LangChain4j + Milvus 从0-1实现会话管理与RAG检索的AIChat超详细教程

本教程将介绍如何使用LangChain4j和Milvus向量数据库构建一个具备流式输出、会话管理、会话隔离和基于文档RAG检索能力的AI机器人。我们将使用阿里百炼模型作为LLM后端,并通过Docker部署Milvus向量数据库。创建Assistant接口,定义聊天服务:LangChain4j 中文文档 | LangChain4j 中文文档wiringMode :这个属性一般两种,一种是自动装配,我们这里选择手动配置。

2301_80014343的博客 1433

Java 实现Map集合排序功能

第一步:Map中新增sort临时键 // 初始化Map集合 List> columns = new ArrayList>(); Map c1 = new HashMap(); c1.put("sort", "8"); c1.put("title", "www.chuweibiao.com"); columns.add(c1); Map c2 = new HashMap()

FOR_CHINA2012的专栏 4385

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5335

java map集合排序的_java Map集合的排序

public static void main(String[] args) {/*** 建的排序*/Map map = new TreeMap();map.put("11", "aa");map.put("22", "bb");map.put("99", "cc");map.put("44", "dd");map.put("55", "ee");map.put("66", "ff");for (...

weixin_31580797的博客 448

墨水屏高效开发:架构、开源库与实战优化指南

嵌入式显示技术中,电子墨水屏以其类纸观感和超低功耗特性,在电子书阅读器、智能办公本及工业仪表等场景中占据独特地位。其工作原理基于微胶囊电泳技术,仅在画面刷新时消耗电能,静态显示时功耗近乎为零,这带来了极致的续航优势。为实现流畅的交互体验,开发者需构建分层渲染架构,通过硬件抽象层统一驱动接口,并引入帧缓冲与差异比较算法智能决策局部刷新区域,从而大幅降低刷新延迟与功耗。开源库如GxEPD2和LVGL为墨水屏适配提供了关键支持,结合波形文件管理与电源优化策略,能有效解决残影与卡顿问题。本文聚焦于eink墨水屏高效

weixin_42545636的博客 410

PX4(CUAV v6x 飞控)+ QAV250 机架无人机组装测试教学(无人机电机转向不对,如何反转电机?)

本文介绍无人机的组装与飞控调试:1.无人机的硬件组装。2.无人机飞控软件的下载,电机、遥控器、电调的校准与调试。

weixin_74185504的博客 2889

Java集合————Map使用Value值排序

Java集合————Map使用Value值排序 在Map集合中,一般是使用键值进行自然排序,所谓自然排序就好比自然数:1、2、3、4、5这样的顺序,字母的话就像A、B、C、D、E、F如此排序。但是由于一些特殊的需求,我们需要使用value值进行排序,话不多说,我们直接来看代码 import java.awt.List; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import

yigan123的博客 1349

Arduino IDE 2配置ESP32-S3工程全指南

嵌入式开发中,Arduino框架通过硬件抽象层(HAL)大幅降低MCU入门门槛,其核心在于板级支持包(BSP)与底层构建系统(如ESP-IDF)的精准协同。理解CPU频率、Flash模式、分区表、PSRAM等关键配置,本质是掌握SoC时钟树、SPI Flash通信协议、内存映射与FreeRTOS调度机制的技术原理。这些参数不仅决定固件能否启动,更直接影响功耗、实时性、OTA升级与大容量应用(如LVGL、TFLite Micro)的可行性。本文以ESP32-S3为例,聚焦Arduino IDE 2.x环境下从

root9的博客 781

java map集合排序的_java如何对map进行排序详解(map集合的使用)

一、比较器Comparator,实现compare方法二、Collections的sort方法TreeMapTreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于、等于或者大于o2分...

weixin_39630048的博客 108

STM32CubeMX——循迹传感器TCRT5000的使用

前言 人生如逆旅,我亦是行人。 ————苏轼《临江仙·送钱穆父》 一、介绍 TCRT5000描述:(带有晶体管输出的反射光学传感器) TCRT5000是一种反射式光学传感器,它包括一个红外发射器和一个3.5mm引线封装的光电晶体管,可阻挡可见光。还具有1mA 典型被测输出电流,2.5mm峰值工作距离,可应用传感与仪表,工业等行业。 TCRT5000具有紧凑的结构,其中发射光源和探测器布置在同一方向,通过使用来自物体的反射红外光束来感知物体的存在。工作波长为950毫米,探测器由光电晶体管组成

W_Oilpicture的博客 1万+

【python数据处理】python实现vlookup字符串模糊匹配及在实战中的应用(FuzzyWuzzy库)

利用FuzzyWuzzy库匹配字符串1. 背景前言2. FuzzyWuzzy库介绍2.1 安装2.1 fuzz模块2.1.1 简单匹配(Ratio)2.1.2 非完全匹配(Partial Ratio)2.1.3 忽略顺序匹配(Token Sort Ratio)2.1.4 去重子集匹配(Token Set Ratio)2.2 process模块2.2.1 extract提取多条数据2.2.2 extractOne提取一条数据3. pandas实战应用3.1 公司名称字段模糊匹配3.1.1 参数讲解:3.1.2

lys_828的博客 8321

java map集合排序的_Java对Map集合进行排序

Java对Map集合进行排序实现 Comparator 接口,重写compare方法,完成自定义排序int compare(Object o1, Object o2) 返回一个基本类型的整型如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)使用示例如下:impo...

weixin_30410473的博客 280

YOLOv12改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv12的检测头变化详解

在目标检测领域,小目标检测一直是一个具有挑战性的问题。算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在中添加小目标检测层,以提高对小目标的检测能力。原始模型结构如下:详细内容参考:YOLOv12原始模型结构介绍 二、有效特征层对应的检测头类别 2.1 P3/8 - small检测头 原始模型中的对应的检测头主要用于检测相对较小的目标。其特征图大小相对较大,空间分辨率较高。 适合检测尺寸大概在到像素左右的目标。 2.2 P4/16 - medium检测头 这个检

Limiiiing的博客 1737

java map集合排序的_Java 实现Map集合排序功能

第一步:Map中新增sort临时键// 初始化Map集合List> columns = new ArrayList>();Map c1 = new HashMap();c1.put("sort", "8");c1.put("title", "www.chuweibiao.com");columns.add(c1);Map c2 = new HashMap();c2.put("sort"...

weixin_36459429的博客 216

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

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java map集合排序的_Java提高(5)---map集合排序

packagecom.test;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.List;imp...

weixin_42107165的博客 257

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java 中 Map集合的遍历与排序

1. Map集合的四种遍历方式 使用Map.Entry遍历for(Map.Entry<String,String> entry : map.entrySet()){ System.out.println(entry.getKey() + "--" + entry.getValue()); } 使用两个foreach遍历 for(String str : map.keySet()...

ZLR_142857_TREE3的博客 755

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Java-07】深入浅出排序算法、Map集合、集合嵌套

在 JDK5 中提供了可变参数,允许在调用方法时传入任意个参数。可变参数原理就是一个数组形式存在格式 : 修饰符 返回值类型 方法名(数据类型… 变量名) { }举例 : public void show(int … num) : 表达式该方法可以接收任意个整数值 , 原理 : 其实就是一个int类型的数组java.util.Map 集合,里面保存的数据是成对存在的,称之为双列集合。存储的数据,我们称为键值对。之前所学的Collection集合中元素单个单个存在的,称为单列集合。

接着奏乐接着舞的博客 2692

Java中对Map集合进行排序,TreeMap,对key和value排序,HashMap排序

Java中对Map集合排序,Java 8 的新特性来实现,TreeMap的使用,对HashMap进行排序

weixin_44144455的博客 3725

Java 根据map集合的key对map集合字典排序

这是工具类中的代码 package com.demo.utils; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class SortUtils { /** * 给map集合中的key实现字...

qq_41921511的博客 3098

java中哪个集合有排序功能,Java 实现Map集合排序功能

第一步:Map中新增sort临时键// 初始化Map集合List> columns = new ArrayList>();Map c1 = new HashMap();c1.put("sort", "8");c1.put("title", "www.chuweibiao.com");columns.add(c1);Map c2 = new HashMap();c2.put("sort"...

weixin_33410492的博客 209
上一篇: Mybatis之序列插入语句(Mysql和Oracle)总结
下一篇: idea 2018版本中没有SVN按钮或者图标的解决方法
god_love_hlq_xff
博客等级 码龄11年 27粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值