```public static List<String> topKFrequent(String[] words, int k) {
Map<String ,Integer> map = new HashMap<>();
for(String str : words){
map.put(str,map.getOrDefault(str,0)+1);
}
PriorityQueue<String> q = new PriorityQueue<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(map.get(o1) == map.get(o2)){
return o2.compareTo(o1);//虽然这个堆是个小堆;因为堆弹出去后要反转,所以再堆里面让首字母字母小
// 的排在字母大的后面
}else {
return map.get(o1) - map.get(o2);
}
}
});
for(String s : map.keySet()) {
q.offer(s);
if(q.size() > k){
q.poll();
}
}
List<String> list = new ArrayList<>();
while ( !q.isEmpty()){
list.add(q.poll());
}
Collections.reverse(list);
return list;
}