2022.6.23 Lintcode每日打卡 2886 给Map排序

 

描述

请给一个无序的 HashMap 排序(按 key 的字典序),并返回排序后 Map

样例

样例一
输入:

 
[Sunmo:40, Jane:46, Tony:30, Beggar:26]

输出:

 
{Beggar=26, Jane=46, Sunmo=40, Tony=30}

样例二
输入:

 
[LingHu:36, Sunmo:20, Emperor:40, Jane:27, Haly:21, Orgen:32]

输出:

 
{Emperor=40, Haly=21, Jane=27, LingHu=36, Orgen=32, Sunmo=20}

思路:

我直接就把它转成一个treemap,然后利用里面自动排序就给他做了

import java.util.*;

public class Solution {
    public static Map<String, Integer> sortMap(Map<String, Integer> map) {
        return new TreeMap(map);
        
    }

}

 有一个答案比较完整的思路,他先转set 再转treeset 然后又转linkedhashmap,其实也比较麻烦 但也行吧

import java.util.*;

public class Solution {
    public static Map<String, Integer> sortMap(Map<String, Integer> map) {
        //1.先取出Map集合的所有key键存放到Set集合,
        Set<String> keySet= map.keySet();
       //2.由于Set集合是无序的,而TreeSet是有序,所以把Set转TreeSet自然就按字母字典排序好了
        TreeSet<String> sortedSet = new TreeSet<>(Comparator.naturalOrder());
        sortedSet.addAll(keySet);
        //3.创建一个新的map集合,注意一定要用LinkedHashMap,因为HashMap是无序的,第4步即使添加时顺序无问题但都会乱的!
        Map<String,Integer> newMap = new LinkedHashMap();
        //4.遍历排序好的TreeSet集合里的key值,再通过key去出value,存入新的Map集合中即可
        for(String key : sortedSet){
            Integer value = map.get(key);
            newMap.put(key,value);
        }
        return newMap;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值