java字符串数组做词频统计

wylc123 1年前 ⋅ 571 阅读
// 词频排序取前五
    private List<String> wordFreq (List<String> words) {
        List<String> result = new ArrayList<>();
        Map<String, Integer> freqMap = new HashMap<>();
        for (String str : words) {
            if (freqMap.containsKey(str)) {
                freqMap.put(str, freqMap.get(str) + 1);
            } else {
                freqMap.put(str, 1);
            }
        }
        // 获取 entry 集合
        List<Map.Entry<String, Integer>> list = new ArrayList<>(freqMap.entrySet());
        // 创建一个 Comparator 对象,按照 value 值降序排序
        Comparator<Map.Entry<String, Integer>> comparator = (o1, o2) -> o2.getValue() - o1.getValue();
        // 对 entry 集合进行排序
        Collections.sort(list, comparator);
        // 取出前五个值
        List<Map.Entry<String, Integer>> top5 = list.subList(0, Math.min(5, list.size()));
        // 输出 top5 的 key 和 value
        for (Map.Entry<String, Integer> entry : top5) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
        result = top5.stream().map(m->m.getKey()).collect(Collectors.toList());
        return result;
    }

相关文章推荐
  • 该目录下还没有内容!

全部评论: 0

    我有话说: