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
原创粉丝点击