当前位置:首页 > Java

java如何求词频

2026-03-23 06:42:31Java

求词频的方法

在Java中求词频可以通过多种方式实现,以下是几种常见的方法:

使用HashMap统计词频

HashMap是统计词频最常用的数据结构,利用键值对存储单词及其出现次数。

import java.util.HashMap;
import java.util.Map;

public class WordFrequency {
    public static Map<String, Integer> countWordFrequency(String[] words) {
        Map<String, Integer> frequencyMap = new HashMap<>();
        for (String word : words) {
            frequencyMap.put(word, frequencyMap.getOrDefault(word, 0) + 1);
        }
        return frequencyMap;
    }

    public static void main(String[] args) {
        String[] words = {"apple", "banana", "apple", "orange", "banana", "apple"};
        Map<String, Integer> frequency = countWordFrequency(words);
        System.out.println(frequency); // 输出:{orange=1, banana=2, apple=3}
    }
}

使用Stream API简化统计

Java 8及以上版本可以使用Stream API简化词频统计代码。

import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class WordFrequencyStream {
    public static void main(String[] args) {
        String[] words = {"apple", "banana", "apple", "orange", "banana", "apple"};
        Map<String, Long> frequency = Arrays.stream(words)
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        System.out.println(frequency); // 输出:{orange=1, banana=2, apple=3}
    }
}

处理文本文件中的词频

如果需要从文本文件中统计词频,可以结合文件读取和上述方法。

java如何求词频

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class FileWordFrequency {
    public static void main(String[] args) throws IOException {
        String filePath = "sample.txt";
        try (Stream<String> lines = Files.lines(Paths.get(filePath))) {
            Map<String, Long> frequency = lines
                .flatMap(line -> Arrays.stream(line.split("\\s+")))
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
            System.out.println(frequency);
        }
    }
}

注意事项

  • 处理文本时可能需要考虑大小写敏感性,可以通过toLowerCase()toUpperCase()统一格式。
  • 分割单词时可能需要处理标点符号,可以使用正则表达式如\\W+
  • 对于大数据量,建议使用并行流(parallelStream())提高性能。

标签: 词频何求
分享给朋友:

相关文章

如何求随机数java

如何求随机数java

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用java.util.Random类 Random类是Java标准库中专门用于生成伪随机数的工具类。通过创建…

java如何求平方根

java如何求平方根

求平方根的方法 在Java中,计算平方根可以通过多种方式实现,以下是几种常见的方法: 使用Math.sqrt()方法 Math类中的sqrt()方法是计算平方根最直接的方式,它接受一个double类…

java中如何求平方根

java中如何求平方根

使用 Math.sqrt() 方法 在 Java 中,Math.sqrt() 是计算平方根的最直接方法。该方法接受一个 double 类型的参数,并返回其平方根,结果也是 double 类型。…

java如何求当前日期

java如何求当前日期

获取当前日期的方法 在Java中,可以通过多种方式获取当前日期,以下是几种常见的方法: 使用java.util.Date类 import java.util.Date; Date currentD…

java如何求绝对值

java如何求绝对值

求绝对值的方法 在Java中,可以通过以下几种方式求一个数的绝对值: 使用Math.abs()方法 Math.abs()是Java标准库中最常用的求绝对值方法,支持多种数据类型: int类…

java如何求两点距离

java如何求两点距离

计算两点距离的方法 在Java中,计算两点之间的距离通常使用欧几里得距离公式。以下是几种实现方式: 使用Math类计算 通过Math.sqrt()和Math.pow()方法实现欧几里得距离公式:…