1、hashmap的value排序

//hashMap  value 排序
public class demo3 {public static void main(String[] args) {HashMap map_Data = new HashMap();map_Data.put("0", 90);map_Data.put("1", 50);map_Data.put("2", 50);map_Data.put("3", 25);map_Data.put("4", 85);map_Data.put("5", 95);map_Data.put("6", 8);map_Data.put("7", 10);map_Data.put("9",2);System.out.println(map_Data);//map  按照value排序List<Map.Entry<String, Integer>> list_Data = new ArrayList<Map.Entry<String, Integer>>(map_Data.entrySet());Collections.sort(list_Data, (o1, o2) -> {if (o2.getValue() != null && o1.getValue() != null && o2.getValue().compareTo(o1.getValue()) > 0) {return 1;} else {return -1;}});System.out.println(list_Data);}
}

结果:

如果Value是String 类型(数字)的转成Int类型再排序
2.String类型比较:

public static void main(String[] args) {HashMap map_Data = new HashMap();map_Data.put("0", "90");map_Data.put("1", "50");map_Data.put("2", "50");map_Data.put("3", "25");map_Data.put("4", "85");map_Data.put("5", "95");map_Data.put("6", "8");map_Data.put("7", "10");map_Data.put("9","12");System.out.println(map_Data);//map  按照value排序List<Map.Entry<String, String>> list_Data = new ArrayList<Map.Entry<String, String>>(map_Data.entrySet());Collections.sort(list_Data, new Comparator<Map.Entry<String, String>>() {public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {if (o2.getValue() != null && o1.getValue() != null && o2.getValue().compareTo(o1.getValue()) > 0) {return 1;} else {return -1;}}});System.out.println(list_Data);}

结果:

{0=90, 1=50, 2=50, 3=25, 4=85, 5=95, 6=8, 7=10, 9=12}
[5=95, 0=90, 4=85, 6=8, 2=50, 1=50, 3=25, 9=12, 7=10]

结果明显不是我们想要的,看看源码:

    public int compareTo(String anotherString) {int len1 = value.length;int len2 = anotherString.value.length;int lim = Math.min(len1, len2); //取最小的那个char v1[] = value;char v2[] = anotherString.value;int k = 0;while (k < lim) {char c1 = v1[k];char c2 = v2[k];if (c1 != c2) {return c1 - c2;}k++;}return len1 - len2;}

源码中的String比较是取长度,然后获取长度最短的(Math.min(len1, len2)),然后进行字符比较code值

HashMap 的Value排序相关推荐

  1. java的hashmap排序_Java面试题:如何对HashMap按键值排序

    Java中HashMap是一种用于存储"键"和"值"信息对的数据结构.不同于Array.ArrayList和LinkedLists,它不会维持插入元素的顺序. ...

  2. 如何对HashMap按键值排序

    Java中HashMap是一种用于存储"键"和"值"信息对的数据结构.不同于Array.ArrayList和LinkedLists,它不会维持插入元素的顺序. ...

  3. 含有hashmap的arraylist排序

    按照hashmap中的key为name字段排序: private void descSort(final String order,String dir){ Collections.sort(arra ...

  4. Hashmap遍历及排序

    hashmap元素排序 想要hashmap中的元素有序可以使用linkedHashMap. HashMap<Integer, User> hashMap = new HashMap< ...

  5. HashMap分别按照key和value进行排序的快捷方法

    Map<Integer, Integer> map = new HashMap<>();map.put(3,3);map.put(2,2);map.put(1,6);map.p ...

  6. java 中对hashmap进行排序

    public class HashMapSort {public static void main(String[] args) {HashMap<Integer, Student> ha ...

  7. 【JAVASE】HashMap与TreeMap的排序与存储对象的区别

    文章目录 前言 键为整形(Integer) HashMap自动排序的情况 HashMap不会自动排序的情况 键为字符串 键为自定义类型 总结 前言 我们知道,HashMap不会对键进行排序,而Tree ...

  8. 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看

    来自:烟雨星空 前言 HashMap 源码和底层原理在现在面试中是必问的.因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合.文章较长,介绍了很多原理性的问题,希 ...

  9. hashmap value占用空间大小_【Java集合框架002】原理层面:HashMap全解析

    一.前言 二.HashMap 2.1 HashMap数据结构 + HashMap线程不安全 + 哈希冲突 2.1.1 HashMap数据结构 学习的时候,先整体后细节,HashMap整体结构是 底层数 ...

  10. 查询已有链表的hashmap_面试官再问你 HashMap 底层原理,就把这篇文章甩给他看...

    前言 HashMap 源码和底层原理在现在面试中是必问的.因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合.文章较长,介绍了很多原理性的问题,希望对你有所帮助~ ...

最新文章

  1. oracle剩余月份计算,[HELP]如何计算两个日期之间的月份(非MONTHS_BETWEEN)?
  2. 老版本fortran语言 内存无效_面向科学计算的高性能动态编程语言 Julia
  3. WordPress强制跳转https教程
  4. php文件包含绕过,文件包含漏洞(绕过姿势) | nmask's Blog
  5. 大剑无锋之面试问到了Kafka???【面试推荐】
  6. vue项目示例代码git_您应该了解的5个Git命令以及代码示例
  7. pytorch 语义分割loss_关于pytorch语义分割二分类问题的两种做法
  8. 面试高级测试工程师修炼之接口测试平台开发
  9. 《深入理解JAVA虚拟机》周志明 第三版 - 第三章 垃圾收集器与内存分配策略
  10. 如何下载Java API文档?
  11. DSD解码ES9038PRO和AK4497
  12. NDK开发(一)————如何在Android Studio下进行NDK开发
  13. SQL 字符串去除空格函数
  14. Windows Mobile 6.x 下改Tahoma字体+微软雅黑说明
  15. 杭电一学生还没毕业年薪已过百万,带十几人的研发团队!
  16. Kafka的版本号说明
  17. 计算机学院刘岗,中科院金属所刘岗研究员访问城市环境研究所
  18. 转载:UE4蓝图控制Niagara粒子
  19. 如何在visio中导入新下载的模具
  20. 利用 Github 网络钩子实现自动化部署

热门文章

  1. Linux系统tomcat修改端口
  2. bigemap中下载边界_BIGEMAP地图下载器-全能版
  3. 在线答题小程序一站式开发(现源码)
  4. java性能调优寻找瓶颈常用的命令_Java性能调优:利用VisualVM进行性能分析
  5. JVM 核心技术 22 讲
  6. 阮一峰ES6入门读书笔记(九):Set 和 Map
  7. 单片机C51 之(1)简介
  8. PXE配置-Tftpd64
  9. keil5的基本使用
  10. 2022年度成都市工程系列专业技术高级职称申报评审工作内容及所需材料