Kotlin:可迭代<T> 来自序列<T>
Kotlin: Iterable<T> from Sequence<T>
在 Kotlin 中,如何从 Sequence<T>
或 Stream<T>
中获取 Iterable<T>
?
在Java中,我可以通过以下方法获取Iterable<T>
s,但等效的Kotlin代码不起作用:
final Stream<T> s = /*get Stream*/;
final Iterable<T> i1 = s::iterator;
final Iterable<T> i2 = () -> s.iterator();
由于 Kotlin 具有 first-class 函数类型,仅提供 lambda 或方法引用不足以将表达式强制转换为某些 Java 接口。但是,有一个简洁的语法来实现单一抽象方法接口:
val s: Stream<T> = /* get a stream */
val i = Iterable { s.iterator() }
在 Kotlin 中,如何从 Sequence<T>
或 Stream<T>
中获取 Iterable<T>
?
在Java中,我可以通过以下方法获取Iterable<T>
s,但等效的Kotlin代码不起作用:
final Stream<T> s = /*get Stream*/;
final Iterable<T> i1 = s::iterator;
final Iterable<T> i2 = () -> s.iterator();
由于 Kotlin 具有 first-class 函数类型,仅提供 lambda 或方法引用不足以将表达式强制转换为某些 Java 接口。但是,有一个简洁的语法来实现单一抽象方法接口:
val s: Stream<T> = /* get a stream */
val i = Iterable { s.iterator() }