从另一个创建一个列表

假设我在列表中有一些值。 我想用一个新元素返回另一个列表

fun newList():List<Int>{ val values =listOf<Int>(1,2,3,4,5,6); return 7::values; // something like that } 

Kotlin列表的plus运算符 在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操作符实现 ,可以按如下方式使用:

 fun newList(): List<Int> { val values = mutableListOf(1, 2, 3, 4, 5, 6) values += 7 values += listOf(8, 9) return values } 

使用扩展算子的另一种方法。 也许在某些情况下会比使用+ sign或mutableListOf更简单

 fun newList(): List<Int>{ val values = listOf(1,2,3,4,5,6) return listOf(7, *values.toTypedArray(), 8, 9) } 

你可以这样做

 fun newList():List<Int>{ val values =listOf(1,2,3,4,5,6) //Type can be inferred return values.plus(7) } 

我想要一个像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(); 

它允许快速不变的惰性构造,频繁的级联通常用不可变的列表来缓慢。