我有一个类,它使用 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();
然后希望告诉你“不要使用控制结构”的人会接受它。严格来说,?:
运算符是一个控制结构,但它没有像if
或while
这样的关键字。
关于java - 使用 lambda 检查某些内容是否等于 null 或空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758276/