首页 > 解决方案 > 如何从java中的字符串列表(排序)返回第一个非空字符串值

问题描述

我有字符串值列表,想要返回第一个非空值,并且该列表已排序。如何做到这一点?

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

任何线索都会有所帮助。在此先感谢。

标签: javalistfor-loopjava-8

解决方案


随着 Java 8 中Streams的引入,我们可以用函数式的方式来表达这一点:

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

Ideone demo

由于不保证存在非值,因此如果不null存在非值,则返回。或者,我们可以跳过-step 并返回一个,表示结果可能为空:nullnullorElse(...)Optional<String>

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

我们可以进一步修改我们想要过滤的内容,例如,使用String::isBlank除了Objects::nonNull

return schoolDetails.getStudentdata().stream()
    .filter(Objects::nonNull)
    .filter(s -> !s.isBlank())
    .findFirst();

Ideone demo


推荐阅读