当前位置: 首页 > 面试题库 >

如何使用Lambda表达式获取单词的平均长度

令狐跃
2023-03-14
问题内容

我有一个单词列表文本文件,我想从该文件中获取最小,最大和平均单词长度。

我有一个流方法:

public static Stream<String> readWords(String filename) {
    try {
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        Stream<String> stringStream = reader.lines();
        return stringStream;
    } catch (IOException exn) {
        return Stream.<String>empty();
    }
}

在我的主要测试方法中,我正在打印最大和最小

System.out.println(readWords(filename)
        .min(Comparator.comparing(s -> s.length()))
        .get()
        .length()
);
System.out.println(readWords(filename)
        .max(Comparator.comparing(s -> s.length()))
        .get()
        .length()
);

它按预期工作。

问题:
是否有可能像我在min和max中那样获得单词长度的平均值?在这两种情况下,是或否,怎么做(仅作为Lambda表达式)?


问题答案:

lines()方法将为您提供一行流,而不是单词。有了之后Stream,调用flatMap用单词替换行,并提供lambda表达式来拆分单词:

Stream<String> stringStream = reader.lines().flatMap( line -> 
    Stream.of(line.split("\\s+"))
);

这将纠正您对max和的实现min。它还会影响您希望实施的任何平均计算的正确性。

要获得平均值,您可以调用mapToInt将单词流映射到它们的长度(产生一个IntStream),然后调用average,返回一个OptionalDouble

System.out.println(readWords(filename)
    .mapToInt( s -> s.length() )  // or .mapToInt(String::length)
    .average()
    .getAsDouble());


 类似资料:
  • 问题内容: 我低于要求: Employee.java 谓词.java 现在,我的目标是使用class中定义的方法测试要传递给的 年龄 是否成年,为此,我要传递在类的构造函数中传递的方法引用。 但是我不知道如何调用在类中定义的方法,下面是我的测试类:- 我在课程中收到编译错误。 让我知道如何解决此问题。以及是否需要提供其他信息。 问题答案: 谓词接口具有方法。您应该通过以下方式使用此方法: 此方法根

  • 问题内容: 我想提取所有 用 大括号括起来的 单词 ,所以我有一个这样的表达式 匹配的字符串可能包含任意多个这样的单词,但是我开始认为我正在以错误的方式解决此问题。 我的尝试 而且我尝试将花括号这些词提取为组,以便可以使用每一个匹配项。所以,我做了一个正则表达式: 注意:我使用的是JRegex语法,因此我需要避免掉一些curl。 结果 我得到的结果是一个(虽然是正确的)比赛,而我希望有两个比赛和。

  • 问题内容: 在Elasticsearch中,还有什么更好的方法(除了发出完全匹配查询并手动对所有返回文档的长度进行平均)以获取特定索引的平均文档长度? 问题答案: 该_size映射场,如果允许,应该给你的每个文件的大小是免费的。将其与聚合结合起来可以得到所需的内容。就像是:

  • 我正在拼命寻找解决熊猫问题的办法。也许你能帮我。 我正在寻找一个滚动平均值,考虑到之前的平均值。 df看起来像这样: 现在,使用函数我会得到如下结果: 我想从第一个计算中考虑平均值,如下所示: 哪里 提前谢谢你!

  • 本文向大家介绍Android Studio里如何使用lambda表达式,包括了Android Studio里如何使用lambda表达式的使用技巧和注意事项,需要的朋友参考一下 根目录下gradle文件配置 app下gradle文件配置 添加在project / app / build.gradle顶部的插件 在Android{…}中配置 以上所述是小编给大家介绍的Android Studio里如何

  • 我在尝试使用lambda表达式时遇到了这个错误。