JAVA(数组/list/堆)sort自定义方法总结(重写自定义方法 & Lambda表达式)
//默认最小堆
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);
}
}