HashMap对key或value进行排序--Java--小白必懂2

  • HashMap对key进行排序
复制代码
public static void main (String[]args){
            HashMap<String, Integer> map = new HashMap<>();
            map.put("abd", 25);
            map.put("abe", 85);
            map.put("abf", 85);
            //-----------对key进行排序
            // 1---将hashmap的key转成数组,使用Arrays.sort()方法进行排序
            Set set = map.keySet();
            Object[] str = set.toArray();
            Arrays.sort(str);
            for (int i = 0; i < str.length; i++) {
                System.out.println(str[i] + "-----" + map.get(str[i]));
            }
            // 1.1---使用Collections.sort()方法进行排序。该方法可以对list进行排序
            Collection<String> keys = map.keySet();
            List<String> list = new ArrayList<>(keys);
            Collections.sort(list);
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i) + "-----" + map.get(list.get(i)));
            }
        }
复制代码
  • HashMap对value进行排序
复制代码
//-----------对value进行排序共两步:1、转成list,第二使用List.sort(comparator)或Collections.sort(list,comparator)排序
    // 虽然该方法能对key排序但是没法遍历key的值,所以一般是对value排序使用
    public static List sortValueMap(HashMap<String,Integer> map){
        // 1、转成list
        List<Map.Entry<String,Integer>>lst=new ArrayList<>(map.entrySet());
        // 2.1、排序Collections.sort(list,comparator)
        Collections.sort(lst, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//                return o2.getValue().compareTo(o1.getValue());
//                return o2.getValue().compareTo(o1.getValue());// 对value排序
                return o1.getKey().compareTo(o2.getKey()); // 对key排序
            }
        });
            /* A.compareTo(B), 返回值是A-B, int值,共三种取值,正,负,零
            负整数:当前对象的值(A) < 被比较对象的值(B) , 位置排在前
            零:当前对象的值 = 比较对象的值 , 位置不变
            正整数:当前对象的值(A) > 被比较对象的值(B) , 位置排在后
            //2.2 List.sort(comparator)
             lst.sort(new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o2.getValue().compareTo(o1.getValue());
            }
        });
             */
        return lst;
    }
复制代码

 

posted @   Justin_Hu  阅读(693)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示