假设我在List中有一些值。我想返回另一个带有新元素的列表
fun newList():List<Int>{
val values =listOf<Int>(1,2,3,4,5,6);
return 7::values; // something like that
}
答案 0 :(得分:5)
Kotlin列表the plus
operator已超载in kotlin-stdlib
,因此您可以将项目添加到列表中:
val values = listOf(1, 2, 3, 4, 5, 6)
return values + 7
还有一个重载,它会添加另一个列表:
val values = listOf(1, 2, 3, 4, 5, 6)
return listOf(-1, 0) + values + listOf(7, 8)
请注意,在这两种情况下都会创建一个新列表,并将元素复制到其中。
对于MutableList<T>
(具有变异功能,与List<T>
相比),有一个plusAssign
operator implementation,可以按如下方式使用:
fun newList(): List<Int> {
val values = mutableListOf(1, 2, 3, 4, 5, 6)
values += 7
values += listOf(8, 9)
return values
}
答案 1 :(得分:2)
使用扩展运算符的不同方法。在某些情况下,可能比使用+
符号或mutableListOf
fun newList(): List<Int>{
val values = listOf(1,2,3,4,5,6)
return listOf(7, *values.toTypedArray(), 8, 9)
}
答案 2 :(得分:0)
你可以这样做
fun newList():List<Int>{
val values =listOf(1,2,3,4,5,6) //Type can be inferred
return values.plus(7)
}
答案 3 :(得分:0)
我希望与for
和yield
一样使用Scala。它非常好 - 目前是实验性的 - 协同程序:
fun testYield(max:Int): List<Int> {
val values = buildSequence{
for (i in 1..max){
yield(i)
}
}
return values.toList();
}
或者用更短的方式:
fun testYieldFast(max: Int) = buildSequence {
for (i in 1..max)
yield(i)
}.toList();
它允许快速不可变的延迟构造,其中频繁的连接通常在不可变列表中很慢。