Java HashMap排序
来源:互联网 发布:淘宝免费上传视频 编辑:程序博客网 时间:2024/05/17 07:55
HashMap排序可以分为按键排序与按值排序两种,实现思路是先转为List容器,再重写比较函数,调用java内置排序算法即可。
示例代码如下(使用时根据需要修改map容器类型):
HashMap<String, Double> map = new HashMap<String, Double>();map.put("key1", Math.random() * 100);map.put("key4", Math.random() * 100);map.put("key3", Math.random() * 100);map.put("key5", Math.random() * 100);map.put("key2", Math.random() * 100);List<Map.Entry<String, Double>> mapList = new ArrayList<Map.Entry<String, Double>>(map.entrySet()); //排序前打印System.out.println("排序前");for (Map.Entry<String, Double> entry : mapList) {System.out.println(entry.toString());}System.out.println();Collections.sort(mapList, new Comparator<Map.Entry<String, Double>>() {public int compare(Map.Entry<String, Double> obj1, Map.Entry<String, Double> obj2) {// 请使用内置比较函数, 否则可能会报错, 违反使用约定// 具体要满足交换律, 即返回值compare(x, y)与compare(y, x)应一致return obj1.getValue().compareTo(obj2.getValue()); // 比较map值//return obj1.getKey().compareTo(obj2.getKey()); // 比较map键}});//排序后打印System.out.println("排序后");for (Map.Entry<String, Double> entry : mapList) {System.out.println(entry.toString());}按值排序结果:
排序前key1=40.189446938991416key2=97.14547760681302key5=39.86978413432413key3=44.246717054280374key4=65.19003398617575排序后key5=39.86978413432413key1=40.189446938991416key3=44.246717054280374key4=65.19003398617575key2=97.14547760681302
排序前key1=71.17675919899192key2=88.06383506265738key5=17.37417655482928key3=1.89149771013285key4=72.09130459451002排序后key1=71.17675919899192key2=88.06383506265738key3=1.89149771013285key4=72.09130459451002key5=17.37417655482928
0 0
- Java HashMap的排序
- Java HashMap排序
- java HashMap 按值排序
- java的hashmap的排序
- Java:HashMap按键值排序
- java中的HashMap实现排序
- java hashmap 排序 遍历 嵌套
- Java原生排序方法总结--HashMap排序
- Java中HashMap的排序问题
- Java中HashMap排序和遍历
- JAVA中Hashmap按key排序
- [Java]HashMap的两种排序方式
- [Java]HashMap的两种排序方式
- JAVA HashMap、TreeMap根据value值排序
- JAVA HashMap、TreeMap根据value值排序
- Java HashMap是按键排序的
- 对HashMap值进行排序java代码
- Java List/HashSet/HashMap的排序
- 宣化上人:这四句偈能治眼睛的病
- Community detection
- 从头认识java-13.15 使用泛型时出现的问题(2)-实现参数化接口与重载
- 固定于底部的图片返回按钮
- JVM生命周期和类加载机制
- Java HashMap排序
- swap 去除vector多余的容量
- 宣化上人:诸病从何来?
- ReentrantLock源码分析(JDK 1.7)
- CoOS使用教程——中断、裁剪、移植
- Ubuntu Server 配置中的各种坑
- 面试
- cocos2dx 3.7添加手机震动
- POJ1008 玛雅历