【问题标题】:Iterate list look for boolean attribute, return default false迭代列表查找布尔属性,返回默认 false
【发布时间】:2019-03-26 03:29:46
【问题描述】:

我有一个对象列表,每个对象都有一个布尔属性。例如,

public class A {
   private boolean isAvailable;
}

我想迭代这个列表,获取列表中第一个元素的“isavailable”值。如果列表为空或null,那么我想返回false。

我可以使用 Java8 流有效地做到这一点吗?

【问题讨论】:

  • 展示你的尝试?

标签: java java-8 java-stream


【解决方案1】:

当然,Java Streams 可以做到这一点:

boolean result = list.stream().findFirst().map(A::isAvailable).orElse(false);

使用findFirst() 方法获取列表的第一个值(如果存在)。 Map isAvailable 如果列表为空,则返回 false

我强烈反对使用 null 作为列表值。改用空列表。

但如果你想这样做,你可以使用Optional 来包装列表:

boolean result = Optional.ofNullable(list)
        .flatMap(l -> l.stream().findFirst().map(A::isAvailable))
        .orElse(false);

【讨论】:

  • 或者只是boolean result = list!=null && !list.isEmpty() && list.get(0).isAvailable();
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 2015-01-19
  • 1970-01-01
  • 2017-11-23
  • 2015-01-22
相关资源
最近更新 更多