前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接口

posted @ 2021-05-22 15:28  莫恼卿卿  阅读(42)  评论(0编辑  收藏  举报