【问题标题】:How to return first non empty string value from list of strings(sorted) in java如何从java中的字符串列表(排序)返回第一个非空字符串值
【发布时间】:2020-09-24 14:53:09
【问题描述】:

我有一个字符串值列表,想返回第一个非空值,这个列表是排序的。如何做到这一点?

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

任何线索都会有所帮助。提前致谢。

【问题讨论】:

  • 这个List 是否包含null 值,或者您确定只有初始化的Strings(就像您确定它已排序一样)?

标签: java list for-loop java-8


【解决方案1】:

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

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

Ideone demo

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

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

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

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

Ideone demo

【讨论】:

  • 你的Predicate 应该是s -> !s.isBlank()
  • @IQbrod 修复并添加了 ideone 演示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2011-01-23
  • 2022-01-10
相关资源
最近更新 更多