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
来交换 firstOrNull
和 map
,但计算时间不会有任何显着差异,特别是因为您使用的是序列而不是列表。对于序列,您使用 firstOrNull
作为终端操作的事实意味着 map
函数将仅在第一个元素上为 运行。
在 Java 流 API 我可以做这样的事情:
someStream.stream()
.filter(someCondition)
.findFirst()
.map(someMappingStatement)
.orElse(null)
我不想用序列做同样的代码:
someSequence.asSequence()
.filter{ someCondition }
.map{ someMappingStatement }
.firstOrNull()
我对findFirst()
有些担心。因为在这里的序列中我过滤,然后映射所有,但不是第一个元素。我怎样才能更好地按顺序重写它?
在这种情况下,这两个操作发生的顺序无关紧要。您可以通过将 map
替换为 let
来交换 firstOrNull
和 map
,但计算时间不会有任何显着差异,特别是因为您使用的是序列而不是列表。对于序列,您使用 firstOrNull
作为终端操作的事实意味着 map
函数将仅在第一个元素上为 运行。