http://bbs.csdn.net/topics/90321713

这个帖子中没有我想要的答案,treemap是根据key排序的,想以value排序,那么可以key,value互换一下,不过这样的话key(换了之后现在的key是原来的value)就不能重复了

http://www.programcreek.com/2013/03/java-sort-map-by-value/

  1. import java.util.Comparator;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.TreeMap;
  5.  
  6. public class Solution {
  7. public static void main(String[] args) {
  8. HashMap<String, Integer> map = new HashMap<String, Integer>();
  9. map.put("a", 10);
  10. map.put("b", 30);
  11. map.put("c", 50);
  12. map.put("d", 40);
  13. map.put("e", 20);
  14. System.out.println(map);
  15.  
  16. Map sortedMap = sortByValue(map);
  17. System.out.println(sortedMap);
  18. }
  19.  
  20. public static Map sortByValue(Map unsortedMap) {
  21. Map sortedMap = new TreeMap(new ValueComparator(unsortedMap));
  22. sortedMap.putAll(unsortedMap);
  23. return sortedMap;
  24. }
  25.  
  26. }
  27.  
  28. class ValueComparator implements Comparator {
  29.  
  30. Map map;
  31.  
  32. public ValueComparator(Map map) {
  33. this.map = map;
  34. }
  35.  
  36. public int compare(Object keyA, Object keyB) {
  37. Comparable valueA = (Comparable) map.get(keyA);
  38. Comparable valueB = (Comparable) map.get(keyB);
  39. return valueB.compareTo(valueA);  //这个是降序 升序是valueA.compareTo(valueB)
    }
    }

但是这个  如果value是重复的话  只会显示一个

eg

a  1

b  1

c  1

结果只会显示 a  1

感觉这个还是相当于是treemap的把key 和value互换之后的效果

  1. public static Map sortByValue(Map unsortMap) {
  2. List list = new LinkedList(unsortMap.entrySet());
  3.  
  4. Collections.sort(list, new Comparator() {
  5. public int compare(Object o1, Object o2) {
  6. return ((Comparable) ((Map.Entry) (o1)).getValue())
  7. .compareTo(((Map.Entry) (o2)).getValue());
  8. }
  9. });
  10.  
  11. Map sortedMap = new LinkedHashMap();
  12. for (Iterator it = list.iterator(); it.hasNext();) {
  13. Map.Entry entry = (Map.Entry) it.next();
  14. sortedMap.put(entry.getKey(), entry.getValue());
  15. }
  16. return sortedMap;
  17. }

这个是我想要的

如何对hashmap按value值排序的更多相关文章

  1. HashMap根据value值排序

    )))); Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); for (Map.Entry s : entr ...

  2. 按照HashMap中value值进行排序

    import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; ...

  3. 搜狗面试的经典题(C++map按值排序,class struct的差别)

    一:起因 (1)java  Map排序(key,value).请看还有一篇博客 java Map排序 (2)c++ map排序(key,value),能够对c++ map和java Map进行对照:之 ...

  4. Java中Map<Key, Value>存储结构根据值排序(sort by values)

    需求:Map<key, value>中可以根据key, value 进行排序,由于 key 都是唯一的,可以很方便的进行比较操作,但是每个key 对应的value不是唯一的,有可能出现多个 ...

  5. php usort 按照数组中的某个键值排序

    //php usort 按照数组中的某个键值排序 如果第一个参数小于第二个参数 -> 返回小于0的整数如果第一个参数等于于第二个参数 -> 返回等于0的整数如果第一个参数大于于第二个参数 ...

  6. SQL 按特定字段值排序

    SQL 按特定字段值排序的代码,有需要的朋友可以参考下. id, name shandong01 name1 shandong02 name2 shandong03 name3 beijing01 n ...

  7. Java-->把txt中的所有字符按照码表值排序

    --> List 列表中的自动添加的多余空间长度该怎么去除呢?...(已解决,是char 数组中的空字符) package com.dragon.java.filesort; import ja ...

  8. PHP 按二维数组的键值排序

    /** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...

  9. 输入一个字符串,去掉重复的字符,并按ASCII值排序-华为机试

    import java.util.Scanner; //输入字符串,去掉重复的字符,并按ASSIC码值排序 public class quChong { public static void main ...

随机推荐

  1. 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...

  2. Python模块 实现过渡性模块重载

    本文是在阅读Python 学习手册后  感觉比较不错的一个实现模块重载的一个模块,该模块可以实现对已经加载在运行程序中的模块实现重新加载,并且该模块可以递归的实现对要重新加载的模块内所引用的其它模块的 ...

  3. Texas Instruments matrix-gui-2.0 hacking -- run_script.php

    <?php /* * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ * * * Redistrib ...

  4. Lua基本语法-书写规范以及自带常用函数

    Lua基本语法-书写规范和常用函数 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 String Ope ...

  5. Centos(linux)下的Python

    Centos(linux)下安装python3(python2和python3共存) yum -y install lrzsz 首先安装lrzsz工具,lrzsz是一款在linux里可代替ftp上传和 ...

  6. UVa 10410 树重建

    Tree Reconstruction Problem Description You have just finished a compiler design homework question w ...

  7. streamsets 集成 cratedb 测试

    我们可以集成crate 到streamsets 中可以实现强大的数据导入,数据分析能力. 演示的是进行csv 文件的解析并输出到cratedb 环境使用docker && docker ...

  8. ASP.NET vNext:微软下一代云环境Web开发框架

    作者 郭蕾 发布于 2014年5月16日   在5月12日的TechED大会上,微软首次向外界介绍了下一代ASP.NET框架——ASP.NET vNext.ASP.NET vNext专门针对云环境和服 ...

  9. js实现表格行的动态加入------Day56

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/marSmile_tbo/article/details/36752655 现代页面通常都是用div+ ...

  10. Tensoflw.js - 01 - 安装与入门(中文注释)

    Tensoflw.js - 01 - 安装与入门(中文注释) 参考 W3Cschool 文档:https://www.w3cschool.cn/tensorflowjs/ 本文主要翻译一些英文注释,添 ...