Kotlin 序列:filter + find first + map

Kotlin sequences: filter + find first + map

在 Java 流 API 我可以做这样的事情:

someStream.stream()
          .filter(someCondition)
          .findFirst()
          .map(someMappingStatement)
          .orElse(null)

我不想用序列做同样的代码:

someSequence.asSequence()
            .filter{ someCondition }
            .map{ someMappingStatement }
            .firstOrNull()

我对findFirst()有些担心。因为在这里的序列中我过滤,然后映射所有,但不是第一个元素。我怎样才能更好地按顺序重写它?

在这种情况下,这两个操作发生的顺序无关紧要。您可以通过将 map 替换为 let 来交换 firstOrNullmap,但计算时间不会有任何显着差异,特别是因为您使用的是序列而不是列表。对于序列,您使用 firstOrNull 作为终端操作的事实意味着 map 函数将仅在第一个元素上为 运行。