如何在Java中将Java集合转换为Kotlin序列(反之亦然)?
我正在用Java实现一个Kotlin接口,它希望我返回一个如何在Java中将Java集合转换为Kotlin序列(反之亦然)?,java,collections,kotlin,sequence,Java,Collections,Kotlin,Sequence,我正在用Java实现一个Kotlin接口,它希望我返回一个序列 如何将Java集合转换为Kotlin序列?相反,如何将Kotlin序列转换为Java集合?以下是一些转换: val javaList = java.util.ArrayList<String>() javaList.addAll(listOf("A", "B", "C")) // From Java List to Sequence val seq = sequenceOf(*javaList.toTypedArray
序列
如何将Java集合转换为Kotlin
序列
?相反,如何将Kotlin序列
转换为Java集合?以下是一些转换:
val javaList = java.util.ArrayList<String>()
javaList.addAll(listOf("A", "B", "C"))
// From Java List to Sequence
val seq = sequenceOf(*javaList.toTypedArray())
// or
val seq2 = javaList.asSequence()
// Sequence to Kotlin List
val list = seq.toList()
// Kotlin List to Sequence
val seqFromList = sequenceOf(*list.toTypedArray())
// or
val seqFromList2 = list.asSequence()
// Sequence to Java List
val newJavaList = java.util.ArrayList<String>().apply { seqFromList.toCollection(this) }
// or
val newJavaList2 = java.util.ArrayList<String>()
newJavaList2.addAll(seqFromList)
val javaList=java.util.ArrayList()
addAll(listOf(“A”、“B”、“C”))
//从Java列表到序列
val seq=sequenceOf(*javaList.toTypedArray())
//或
val seq2=javaList.asSequence()
//序列到Kotlin列表
val list=序号toList()
//要排序的Kotlin列表
val seqFromList=sequenceOf(*list.toTypedArray())
//或
val seqFromList2=list.asSequence()
//序列到Java列表
val newJavaList=java.util.ArrayList().apply{seqFromList.toCollection(this)}
//或
val newJavaList2=java.util.ArrayList()
newJavaList2.addAll(seqFromList)
像这样:
val javaList = java.util.ArrayList<String>()
val kotlinSeq = javaList.asSequence()
val newJavaList = java.util.ArrayList<String>().apply { kotlinSeq.toCollection(this) }
val javaList=java.util.ArrayList()
val kotlinSeq=javaList.asSequence()
val newJavaList=java.util.ArrayList().apply{kotlinSeq.toCollection(this)}
由于Kotlin代码是从Java运行的,所以变得有点棘手
让我们尝试重新创建场景:
科特林:
interface SequenceInterface {
fun foo(list: List<Int>) : Sequence<Int>
}
然后您可以开始在Java中使用它:
new Foo().foo(Arrays.asList(42))
请记住,所有有用的方法都将消失,因为它们是作为Kotlin扩展实现的
是否要转换为列表
?在纯Java中,只需重申:
ArrayList<Integer> list = new ArrayList<>();
seq.iterator().forEachRemaining(list::add);
ArrayList list=new ArrayList();
seq.iterator().forEachRemaining(list::add);
另外,确保您绝对需要在Kotlin的代码中返回一个
序列。如果您想实现更好的互操作性,那么返回流将更有意义。Hi@DVarga,在任何Java集合中都没有Assequne方法。我在ArrayList中找不到asSequence方法是中的一个扩展函数。是的,但我必须在java中实现Kotlin接口,该接口返回序列。。。。。。我有Java集合ArrayList,但如何将其转换为序列bcz Java集合没有.asSequence方法
ArrayList<Integer> list = new ArrayList<>();
seq.iterator().forEachRemaining(list::add);