【问题标题】:Check for a value in Kotlin immutable list检查 Kotlin 不可变列表中的值
【发布时间】:2021-04-21 19:52:11
【问题描述】:

我需要将 kotlin 中的以下几行浓缩为更优雅的方式。我无法弄清楚如何同时检查可选值和值。基本上我需要验证列表“a”是否存在,有一个或多个项目并且它们不是 0。

val a = Utils.getItems() // returns an Optional<ImmutableList<ItemChange>>
if(!a.orElse(ImmutableList.of()).size > 0) {
  val nonZero = a.get().filter { it.item != BigDecimal.ZERO }
  return nonZero.size > 0
}

【问题讨论】:

    标签: kotlin guava optional


    【解决方案1】:

    假设您还想在不存在或大小为 0 时返回 false,这就是我的做法。

    any 函数在任何值匹配时返回 true,因此它已经处理了空列表的情况。如果找到任何匹配项,它会立即中断,而 filter 将彻底检查整个 List 并分配一个新 List 来保存结果。

    Guava Optional 可以使用 orNull() 简单地转换为可空值,因为 Kotlin 已经内置了空值安全性。

    val items = Utils.getItems().orNull()
    return items != null && items.any { it.item != BigDecimal.ZERO }
    

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多