Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将Java集合转换为Kotlin序列(反之亦然)?_Java_Collections_Kotlin_Sequence - Fatal编程技术网

如何在Java中将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接口,它希望我返回一个
序列


如何将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);