• HashMap根据value值排序


    /**
    * hashMap排序
    * @author lizhibiao
    * @date 2018/12/3 11:47
    */
    public class TestHashMapCollections
    {
    public static void main(String[] args)
    {
    Map<String, Integer> map = new HashMap<>();
    map.put("王二", 8);
    map.put("沈吴", 2);
    map.put("小菜", 3);
    map.put("大鸟", 1);

    Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
    for (Map.Entry s : entrySet)
    {
    System.out.println(s.getKey()+"--"+s.getValue());
    }

    System.out.println("============排序后============");

    //////借助list实现hashMap排序//////

    //注意 ArrayList<>() 括号里要传入map.entrySet()
    List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<String, Integer>>()
    {
    @Override
    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
    {
    //按照value值,重小到大排序
    // return o1.getValue() - o2.getValue();

    //按照value值,从大到小排序
    // return o2.getValue() - o1.getValue();

    //按照value值,用compareTo()方法默认是从小到大排序
    return o1.getValue().compareTo(o2.getValue());
    }
    });

    //注意这里遍历的是list,也就是我们将map.Entry放进了list,排序后的集合
    for (Map.Entry s : list)
    {
    System.out.println(s.getKey()+"--"+s.getValue());
    }

    }
    }


    输出结果如下:
    沈吴--2
    大鸟--1
    小菜--3
    王二--8
    ============排序后============
    大鸟--1
    沈吴--2
    小菜--3
    王二--8


    有疑问,扫我二维码添加微信,欢迎骚扰!
    坚持做一件事,一起学习。


  • 相关阅读:
    Linux中-POSIX 线程详解
    sql server 2008如何导入mdf,ldf文件
    div浏览器兼容问题
    桥(Bridge)模式
    JSTL核心标签
    filter中的dispatcher解析
    synchronized探究
    最全设计模式(转载)
    面试题总结
    企业为什么要去竞争?
  • 原文地址:https://www.cnblogs.com/lizb0907/p/10060349.html
Copyright © 2020-2023  润新知