Kotlin 序列:过滤 + 首先查找 + 映射

Sla*_*how 7 java functional-programming sequence kotlin

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

someStream.stream()
          .filter(someCondition)
          .findFirst()
          .map(someMappingStatement)
          .orElse(null)
Run Code Online (Sandbox Code Playgroud)

我不想对序列执行相同的代码:

someSequence.asSequence()
            .filter{ someCondition }
            .map{ someMappingStatement }
            .firstOrNull()
Run Code Online (Sandbox Code Playgroud)

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

Ten*_*r04 6

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