如何从已排序的字符串列表中返回第一个非空字符串值。

huangapple go评论87阅读模式
英文:

How to return first non empty string value from list of strings(sorted) in java

问题

我有一组字符串值,想要返回第一个非空值,而且这个列表是有序的。怎么做?

for (String data : schoolDetails.getStudentdata()) {
    // 需要获取第一个非空数据
}

任何线索将会很有帮助。提前致谢。

英文:

I have list of string values and wants to return first non empty value and this list is sorted. how to achieve this?

for( String data:schoolDetails.getStudentdata(){
 // have to get first non empty data 
}

any leads would be helpful.Thanks in advance.

答案1

得分: 2

使用 Java 8 引入的 Streams,我们可以以函数式的方式表达这个逻辑:

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .findFirst()
    .orElse(null);

<kbd>Ideone 演示</kbd>

由于不能保证存在非 null 的值,如果不存在非 null 的值,我们将返回 null。或者,我们可以跳过 orElse(...) 步骤,返回一个 Optional&lt;String&gt;,表示结果可能为空:

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .findFirst();

此外,我们还可以修改过滤条件,例如,除了 Objects::nonNull,还可以使用 String::isBlank 并结合 Predicate::not

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .filter(Predicate.not(String::isBlank))
    .findFirst();

<kbd>Ideone 演示</kbd>

英文:

With the introduction of Streams in Java 8, we can express this in a functional way:

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .findFirst()
    .orElse(null);

<kbd>Ideone demo</kbd>

Since it is not guaranteed that a non-null value exists, we return null if no non-null value exists. Alternatively, we can skip the orElse(...)-step and return an Optional&lt;String&gt;, signaling that the result might be empty:

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .findFirst();

We can furthermore modify what we want to filter by, for example, using String::isBlank in addition to Objects::nonNull and the help of Predicate::not:

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .filter(Predicate.not(String::isBlank))
    .findFirst();

<kbd>Ideone demo</kbd>

huangapple
  • 本文由 发表于 2020年9月24日 22:53:09
  • 转载请务必保留本文链接:https://go.coder-hub.com/64049024.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定