java - 如何从java中的字符串列表(排序)返回第一个非空字符串值
问题描述
我有字符串值列表,想要返回第一个非空值,并且该列表已排序。如何做到这一点?
for( String data:schoolDetails.getStudentdata(){
// have to get first non empty data
}
任何线索都会有所帮助。在此先感谢。
解决方案
随着 Java 8 中Stream
s的引入,我们可以用函数式的方式来表达这一点:
return schoolDetails.getStudentdata().stream()
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
由于不保证存在非值,因此如果不null
存在非值,则返回。或者,我们可以跳过-step 并返回一个,表示结果可能为空:null
null
orElse(...)
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();
推荐阅读
- python - TypeError:“int”对象在 Python3 中不可下标
- laravel - 如何在 laravel 的一列上分组?
- r - 如何定义我的函数以保留 geom_point + geom_line
- swift - 在每个 TimeIntervalNotification 中不重复的随机元素
- devexpress - 如何在 WinAppDriver 中找到 DevExpress Grid Cell Active Editor 元素
- c++ - 蛇游戏:蛇的运动
- java - 如何使用 java css 处理 onkeypress 属性
- c++ - 错误:无法传递非平凡类型“std::string”的对象和更多错误
- android - 将自定义布局添加到生物识别提示
- java - 在另一个模块中获取资源的 URL