前K个高频单词
public static List<String> topKFrequent(String[] words, int k) {
HashMap<String,Integer> hashMap=new HashMap<>();
for(String a:words)
{
hashMap.put(a,hashMap.getOrDefault(a,0)+1);
}
Set<Map.Entry<String,Integer>> set=hashMap.entrySet();
List<Map.Entry<String,Integer>> list=new ArrayList<>(set);
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> stringIntegerEntry, Map.Entry<String, Integer> t1) {
return stringIntegerEntry.getValue().equals(t1.getValue())?stringIntegerEntry.getKey().compareTo(t1.getKey()):
+t1.getValue().compareTo(stringIntegerEntry.getValue());
}
});
int count=0;
List<String> list1=new ArrayList<>();
for(Map.Entry<String,Integer> a:list)
{
if(count==k)
break;
list1.add(a.getKey());
count++;
}
return list1;
}
一定要注意HashMap是没有序的,所以要对HashMap进行排序,就要将HashMap变为List集合
排序使用Collectios.sort()来进行排序,默认是升序
如果要实现降序,就要对Comparator接口