JAVA(数组/list/堆)sort自定义方法总结(重写自定义方法 & Lambda表达式)

时间:2025-03-27 13:14:13
//默认最小堆 Queue<Integer> minPq = new PriorityQueue<>(); //自定义最大堆 Queue<Integer> maxPq = new PriorityQueue<>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); //稍复杂排序 //题目来源: /problems/top_k_frequently_mentioned_keywords /**HashMap<字符, 出现的频数>, 按频数降序排列,若频数相同则字符按字典序排列**/ HashMap<String, Integer> map = new HashMap<>(); Queue<Map.Entry<String, Integer>> maxPq = new PriorityQueue<>(new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue().equals(o1.getValue()) ? o1.getKey().compareTo(o2.getKey()) : o2.getValue() - o1.getValue(); } }); //附加: //遍历HashMap中的Entry for (Map.Entry<String, Integer> en : map.entrySet()) { if (en.getValue() != 0) { maxPq.offer(en); } }