java单机版word-count

java.nio.file.Path.of方法需要jdk11的支持

public static void main(String[] args) {
    // 1.利用try-with-resource语句从文件读取每行文字,形成以行为单位的字符串流
    try (Stream<String> lineStream = Files.lines(Path.of("/Users/yang/test.txt"), Charset.defaultCharset())) {

        List<String> collect = lineStream
                .flatMap(line -> Arrays.stream(line.split("\t")))  // 2.将每行字符用制表符切分,每一行就形成了一个单词流,居于内层;然后将所有内层流扁平化,汇聚成一个大的外层流
                .distinct()  // 3.去重
                .collect(Collectors.toList());

        System.out.println(collect.size());
        collect.forEach(System.err::println);  //只能输出所有不重复的单词
    } catch (IOException e) {
        e.printStackTrace();
    }
}

WC:

public static void main(String[] args) {
    // 1.利用try-with-resource语句从文件读取每行文字,形成以行为单位的字符串流
    try (Stream<String> lineStream = Files.lines(Path.of("/Users/yang/test.txt"), Charset.defaultCharset())) {

        List<String> collect = lineStream
                .flatMap(line -> Arrays.stream(line.split("\t")))  // 2.将每行字符用制表符切分,每一行就形成了一个单词流,居于内层;然后将所有内层流扁平化,汇聚成一个大的外层流
                .map(String::trim)
                .collect(Collectors.groupingBy(String::toString));
       mapped.forEach((k, v) -> System.err.println(k + "----" + v.size()));  //输出所有不重复的单词及数量
    } catch (IOException e) {
        e.printStackTrace();
    }
}
posted @ 2022-05-30 11:06  JaxYoun  阅读(44)  评论(0编辑  收藏  举报