美文网首页
对 HashMap 按照 value 排序

对 HashMap 按照 value 排序

作者: PC_Repair | 来源:发表于2019-08-29 14:10 被阅读0次

    通过 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
    

    相关文章

      网友评论

          本文标题:对 HashMap 按照 value 排序

          本文链接:https://www.haomeiwen.com/subject/tfjiectx.html