描述
请给一个无序的 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;
}
}