java - 使用 lambda 检查某些内容是否等于 null 或空

标签 java lambda

我有一个类,它使用 Java 中的 Lambda 计算句子中的平均单词数。我遇到的问题是,如果 corp 为 null 或为空,我需要返回 0。目前,如果 corp 为 null 或为空,我将得到 NaN。我的代码的其余部分做了它应该做的事情,但我无法弄清楚这部分。

public class AverageNumberOfWordsPerSentence extends TextMetric<Double> {
@Override
public Double apply(final Corpus corp) {
    Sentences sentences = new Sentences();
    List<String> sentenceList = sentences.apply(corp);

    LongSummaryStatistics lss = corp.texts().stream()
                                    .map(blob -> blob.text())
                                    .flatMap(string -> stream
                                    (string.split("\\W+")))
                                    .filter(string -> !string.isEmpty())
                                    .mapToLong(String::length)
                                    .summaryStatistics();                                   
                                    return (double)lss.getCount() / 
                                                   sentenceList.size();
}

最佳答案

将返回语句更改为:

return sentenceList.isEmpty() ? 0.0 : (double)lss.getCount() / sentenceList.size();

然后希望告诉你“不要使用控制结构”的人会接受它。严格来说,?:运算符一个控制结构,但它没有像ifwhile这样的关键字。

关于java - 使用 lambda 检查某些内容是否等于 null 或空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758276/

相关文章:

java - 如何序列化 JAXBElement?

c# - Xamarin.Forms - 可以对 SetBinding() lambda 参数进行变量化吗?

python - 'NameError : global name is not defined' under pdb, 对于确实存在的字典

c++ - 在 C++ 中使用 lambda 的简单自定义迭代器

java - LWJGL:加载库失败

java - 使用 if、else if、else 重写 java 中的 switch 语句

Java如何将非模式对话框中的双击事件结果传递给父框架?

java - 如何使用此网格适配器构造函数

c++ - 使用 _beginthreadex、__stdcall 和 lambda 创建线程

java - 使用 Lambda 将对象列表转换为 String[]