Java treemap 排序

TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;
以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。

为了处理排序的问题:
    1. 对于一些简单的排序,如:数字,英文字母等
        TreeMap hm = new TreeMap<String, String>(new Comparator() {
               public int compare(Object o1, Object o2) {
                      //如果有空值,直接返回0
                      if (o1 == null || o2 == null)
                          return 0; 
                    
                     return String.valueOf(o1).compareTo(String.valueOf(o2));
               }
      });
      备注:
        compareTo(String str) :是String 提供的一个方法,如果参数字符串等于此字符串,
                  则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;
                  如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。

        int compare(T o1,T o2):随第一个参数小于、等于或大于第二个参数而分别返回负整数、
                                    零或正整数。
   

  2.对于处理有中文排序的问题
     TreeMap hm = new TreeMap<String, String>(new Comparator() {
          public int compare(Object o1, Object o2) {
               //如果有空值,直接返回0
                if (o1 == null || o2 == null)
                      return 0; 
                    
              CollationKey ck1 = collator.getCollationKey(String.valueOf(o1));
              CollationKey ck2 = collator.getCollationKey(String.valueOf(o2));
              return ck1.compareTo(ck2);              
        }
      });

    备注: CollationKey:CollationKey 表示遵守特定 Collator 对象规则的 String。
            比较两个CollationKey 将返回它们所表示的 String 的相对顺序。使用 CollationKey
          来比较 String 通常比使用 Collator.compare 更快。因此,当必须多次比较 String 时
           (例如,对一个 String 列表进行排序),使用 CollationKey 会更高效。

 

实例:

package ChineseSort;
import java.util.Collection;
import java.util.Iterator;
import java.util.SortedMap;
import java.util.TreeMap;

public class TestSort {
public static void main(String[] args) {
    // TODO Auto-generated method stub    
    CollatorComparator comparator = new CollatorComparator();
    TreeMap map = new TreeMap(comparator);
      
    for(int i=0; i<10; i++) {
        String s = ""+(int)(Math.random()*1000);
        map.put(s,s);
    }
    map.put("abcd","abcd");
    map.put("Abc", "Abc");
    map.put("bbb","bbb");
    map.put("BBBB", "BBBB");
    map.put("北京","北京");
    map.put("中国","中国");
    map.put("上海", "上海");
    map.put("厦门", "厦门");
    map.put("香港", "香港");
    map.put("碑海", "碑海");
    Collection col = map.values();
    Iterator it = col.iterator();
    while(it.hasNext()) {
        System.out.println(it.next());}}}

比较器类:
package ChineseSort;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;

public class CollatorComparator implements Comparator {
Collator collator = Collator.getInstance();
public int compare(Object element1, Object element2) {
    CollationKey key1 = collator.getCollationKey(element1.toString());
    CollationKey key2 = collator.getCollationKey(element2.toString());
    return key1.compareTo(key2);
}
}
运行该类,运行结果如下:
325
62
653
72
730
757
874
895
909
921
Abc
abcd
bbb
BBBB
碑海
北京
上海
厦门
香港
中国
      此时可以看到中文的排序已经完成正常。如果想不让英文区分大小写,则修改CollatorComparator类,找到
    element1.toString()
    修改为:
    element1.toString().toLowerCase()
    当然你改成转换成大写的也无所谓了,当然element2.toString()也要同时修改为element2.toString().toLowerCase()。

攀藤PMS系列传感器STM32驱动开发与数据解析实战 本文详细介绍了攀藤PMS系列传感器与STM32微控制器的驱动开发与数据解析实战,涵盖硬件连接、数据协议解析、驱动源码编写及数据处理优化。重点解析了传感器数据帧结构,提供了完整的STM32驱动实现代码,并分享了实际应用中的问题排查与性能优化经验,帮助开发者快速实现高精度颗粒物浓度检测。 阅读详情

相关推荐

VM虚拟机下,通过无线,有线两种方式连接PLC的设置方法

1,VMware软件:编辑>虚拟网络编辑器。 2.右下角:更改设置(如果可以选中“添加网络”选项,则可考虑略过此步) 3.选中VMnet0,点击桥接模式,选中你的物理机有线网卡。点击确定。 4.点击添加网络,我的添加完是VMnet2,然后选中,像上一步样,点击桥接模式,在下拉菜单中选中笔记本的【无线网卡】,然后点击确定。 5.VMware软件:虚拟机>设置。 6.点击 添加>网络...

weixin_46441715的博客 2万+

TreeMap的排序

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

yangnk的技术记录 3357

ADNI数据集下载(详细)

刚刚接触到这个数据集的时候比较头疼,用了好长的时间才把下载过程和预处理过程弄明白。需要发送电子邮件给官方平台,收到回信后才能够下载到数据集。 1、ADNI账号注册 第一步:搜索百度打开ADNI 第二步,点击ADTA&amp;amp;SAMPLES 第三步:一直将鼠标往下拉 点击ADNI,进入里面填写信息。需要填写的信息还是挺多的,耐心填写,再等到邮件回复就可以了 2、ADNI数据集下载 登录申请的邮...

蜗牛遥遥 3万+

Java TreeMap排序

TreeMap实现了SortedMap接口, 根据键自然排序, 要求键必须是可比较的,要么指定Comparator比较器,如果没有Comparator比较器, 键要实现Comparable接口。 package Map; import java.util.Comparator; import java.util.TreeMap; /** * TreeMap */ public class Test { public static void main(String[] args) {

qq_45858803的博客 2335

YOLOv5添加注意力机制的具体步骤

本文主要介绍了 本文在此篇博客的基础上向YOLOv5-5.0版 本文主要包括以下内容一、CBAM注意力机制添加(1)修改yolov5s主干网络(2)在common.py中添加可调用的CBAM模块(3)向yolo.py文件添加CBAMC3判断语句二、SE注意力机制添加 本文以yolov5s网络为例 一、CBAM注意力机制添加 注意力机制可以添加在backbone,Neck,Head等部分,接下来本文以backbone主干网络为例 (1)修改yolov5s主干网络 1.在yolov5-5.0工程文件夹下,找到m

thy0000的博客 2万+

Vivado ILA抓不到低频信号?试试Capture Control模式,保姆级配置教程(附PWM调试实例)

本文详细解析了Vivado ILA的Capture Control模式在低频信号捕获中的应用,特别针对PWM调试等场景提供保姆级配置教程。通过条件采样和时间拉伸技术,有效解决传统ILA采样在低频信号调试中的存储深度不足、关键信号丢失等问题,并附赠呼吸灯PWM的完整调试实例,帮助FPGA开发者提升调试效率。

weixin_42549451的博客 349

Java实现TreeMap集合的排序:Key键的升序与降序、Value值的排序

Java 提供的 Map 接口常用的实现类有 HashMap 和 TreeMap。HashMap 类实现的 Map 集合对于添加和删除映射关系效率更高。HashMap 通过哈希码对其内部的映射关系进行快速查找;而 TreeMap 中的映射关系存在一定的顺序,如果希望 Map 集合中的对象也存在一定的顺序,应该使用 TreeMap 类实现 Map 集合。 下面将通过实例来实现Map 接口中的 TreeMap 集合按照 Key 键的升序与降序,按照 Value 值的排序。 (1)创建用户信息实体类 /.

pan_junbiao的博客 2万+

VulnHub靶机渗透实战(详细思路讲解)

使用kali中的namp工具扫描开放端口,这时kali会用一个端口号向目标主机的65535个端口发送TCP连接建立请求,回应了ack=1,syn=q的端口就是开放端口号,这里可以看到21,22,80,3306号端口是开放的。可以看到这里得到了很多哈希,带*号的是禁用的或者是空密码,将三个不带星号的密码复制下来,创建一个shell.txt文档,将三个密码复制进去。这里看到我们是没有成功进入这个网页的,应该是目录的问题,我们将目录修改一下,但是没有显示出来,可能是编码问题,再回到我们找到的源码。

weixin_65891791的博客 2543

java----TreeMap

比如添加元素,最坏情况下,添加多个元素,形成链表的话,此时TreeMap的效率更高,但是这种这种情况的几率非常少。3.如果一个节点没有子节点或者父节点,则该节点的指针属性为Nil,这些NIl视为叶节点,每个叶节点(Nil)是黑色的;//可以看到,之前讲解第三个参数,代表键重复是否会进行覆盖操作,这里是有开关的,所以支持覆盖的put方法。5.对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。:定义对象的排序顺序,允许你为一个类定义多个不同的排序顺序,或者为那些没有实现。

qq_44766305的博客 1238

360可视门铃双摄版数据恢复实战:BIN文件解析与视频重组

本文详细解析了360可视门铃双摄版BIN文件的数据恢复过程,包括文件结构分析、双摄像头数据存储机制及视频重组技术。通过Python开发环境和FFmpeg工具链,成功实现了H.265视频流的解析与重组,为智能家居设备数据恢复提供了实用解决方案。

weixin_29196891的博客 908

10、GPU发展历程:从光线追踪到网格着色器的技术革新

本文回顾了GPU的发展历程,重点探讨了从光线追踪到网格着色器的技术革新。涵盖了DirectX 12时代(2015-2020)光线追踪与AI结合的突破,包括NVIDIA的Volta架构、DLSS技术原理及可变速率着色的应用。随后介绍了DirectX 12 Ultimate时代(2020)网格着色器的引入,分析了其计算模型、细粒度控制能力及跨平台优势。最后总结了着色器的演变及GPU在多个领域的广泛应用。

ol789012345的博客 182

JAVA集合,TreeMap排序

JAVA集合,TreeMap排序。

随风飘雁 1027

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 145

Java: TreeMap的排序效果

TreeMap默认按照key的大小升序排列 public class Test { // 使用TreeMap记录所有人的得分,获得不同得分的人数,以分数大小排序 public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(Sys...

lahhass的博客 4383

假人有限元模型

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

weixin_44144455的博客 3725

老版QQ原生表情gif动态

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

java treemap 排序原理_Java TreeMap排序算法实例

本文实例讲述了Java TreeMap排序算法。分享给大家供大家参考,具体如下:TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。为了处理排序的问题:1. 对于一些简单的排序,如:数字,英文字母等TreeMap hm = new TreeMap(ne...

weixin_31244053的博客 857

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

在java中使用TreeMap进行中文排序

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://onbus.blogbus.com/logs/11628621.html 最近遇到需要按一个model中不同的列进行排序的问题,查了一下JDK API文档,发现,java中可以排序的工具类和接口共有五个SortedMap 、SortedSet、TreeMap 、TreeSet和Collect

MemRay 4620

java8 treemap 排序_java中TreeMap排序的示例代码

1. 定义TreeMap的排序方法使用Comparator对象作为参数需要注意的是:排序方法是针对键的,而不是值的。如果想针对值,需要更麻烦的一些方法(重写一些方法)TreeMap res = new TreeMap(new Comparator() {@Overridepublic int compare(Screen screen1, Screen t1) { // 定义TreeMap的排序方...

weixin_39588252的博客 741

Java HashMap和TreeMap的排序问题总结

Map存储的是key->value的值对,key的值是唯一的,而value的值可以重复。通常使用的是HashMap或TreeMap,如果考虑性能,使用HashMap。TreeMap使用红黑树实现,保留有key值顺序性,会自动按照key值排序。 默认是按照key值的升序排序,key值必须实现 Comparator接口。如果希望按找一定规则排序,则需要重新定义compare函数。 如:

影の聚宝盆 2574

java treemap 排序原理_怎么在Java中利用TreeMap实现一个排序算法

怎么在Java中利用TreeMap实现一个排序算法发布时间:2020-11-25 17:14:53来源:亿速云阅读:65作者:Leah怎么在Java中利用TreeMap实现一个排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;以前在项目...

weixin_34851528的博客 745

java TreeMap 中文 排序

作者:Junsan Jin  日期:2005-12-23  版本:1.0  信箱:junnef21@sohu.comQQ:334620162MSN:junsanjin@hotmail.com  Blog:http://blog.youkuaiyun.com/junnef  个人站点:http://www.isinfo.com.cn  声明:本人保留本

远超的blog 1365

treemap倒叙_浅谈java中的TreeMap 排序与TreeSet 排序

TreeMap:package com;import java.util.Comparator;import java.util.TreeMap;public class Test5 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubTreeMap tree = ...

weixin_31759829的博客 460

Java基础——List、TreeMap的排序

1.List排序 List集合中的元素的特点,有序可重复。如果想以特定方式排序,需要通过以下几种方式:使用list的sort方法、使用Collections中的sort方法。 1.使用list的sort方法 package myblog.javabasis.collection.Collection.List; //新建一个Student类并重写toString方法 public cla...

Yuhang_Z的博客 1138

java treemap字母排序_浅谈java中的TreeMap 排序与TreeSet 排序

TreeMap:package com;import java.util.Comparator;import java.util.TreeMap;public class Test5 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubTreeMap tree = ...

weixin_32273559的博客 153

Java TreeMap按照key排序

TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序; 以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。 为了处理排序的问题: 1.对于一...

无论何时都不要停止学习,这是改变自己的必要条件 1万+

java treemap 降序排序_Java TreeMap升序|降序排列和按照value进行排序的案例

TreeMap 升序|降序排列import java.util.Comparator;import java.util.TreeMap;public class Main {public static void main(String[] args) {TreeMap map1 = new TreeMap(); //默认的TreeMap升序排列TreeMap map2= new TreeMap(n...

weixin_33548923的博客 376
上一篇: jS打印页面
下一篇: Spring security 3.0 配置实例
maxabe
博客等级 码龄18年 8粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值