对 HashMap 按照 value 排序
2019-08-29 本文已影响0人
PC_Repair
通过 Map.Entry
里的 entrySet
方法把所有的 key
值和 value
值取出来,放在了一个 ArrayList 集合里,再运用 Collections 类的方法进行排序。
public class $347_Top_K_Frequent_Elements {
public static List<Integer> topKFrequent(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<>();
List<Integer> res = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o2.getValue()-o1.getValue();
}
});
for (int i = 0; i < list.size(); i++) {
//res.add(list.get(i).getKey());
System.out.println(list.get(i).getKey() + ": " + list.get(i).getValue());
}
return res;
}
public static void main(String[] args) {
topKFrequent(new int[]{1,1,1,2,2,3}, 2);
}
}
// 输出
1: 3
2: 2
3: 1