1.使用HashMap统计每个字符串出现次数
2.使用优先队列存入map中的entry并进行自定义排序
3.依次输出优先队列中的前k个entry存入结果中
import java.util.*; public class Solution { public String[][] topKstrings (String[] strings, int k) { HashMap<String,Integer> map = new HashMap(); for(String s:strings){ map.put(s,map.getOrDefault(s,0)+1); } PriorityQueue<Map.Entry<String,Integer>> pq = new PriorityQueue<>((a, b)->{ if(a.getValue().compareTo(b.getValue())==0){ return a.getKey().compareTo(b.getKey()); }else{ return b.getValue()-a.getValue(); } }); for(Map.Entry<String,Integer> entry:map.entrySet()){ pq.offer(entry); } String[][] res = new String[k][2]; for(int i = 0;i<k;i++){ Map.Entry<String,Integer> entry = pq.poll(); res[i][0] = entry.getKey(); res[i][1] = String.valueOf(entry.getValue()); } System.out.println("9".compareTo("1")); return res; } }