Kotlin - 使用重复元素创建可变列表

Bas*_*ani 35 list kotlin

什么n是以重复元素值v(例如listOf(4,4,4,4,4))作为表达式创建给定长度的可变列表的惯用方法.

我正在做val list = listOf((0..n-1)).flatten().map{v}但它只能创建一个不可变的列表.

vod*_*dan 67

使用:

val list = MutableList(n) {index -> v}
Run Code Online (Sandbox Code Playgroud)

  • 另外,由于`index`未使用,你可以省略它:`val list = MutableList(n){v}` (25认同)
  • 谢谢!对于不可变列表也是如此:`val list = List(n) { SomeClass }`。 (4认同)

小智 25

另一种方式可能是:

val list = generateSequence { v }.take(4).toMutableList()
Run Code Online (Sandbox Code Playgroud)

此样式与 MutableList 和(只读)列表兼容


pro*_*ota 9

您可以将范围用于此目的,例如

        val listOfFour = (1..10).map { 4 }
Run Code Online (Sandbox Code Playgroud)

或者

        val objectList = (1..10).map {
            YourClass(
                arg1 = "someValue",
                arg2 = it                
            )
        }
Run Code Online (Sandbox Code Playgroud)

如果您需要,您也可以使用it(index) 来满足您的需要。


Shi*_*rur 7

如果你想要不同的对象,你可以使用repeat. 例如,

 val list = mutableListOf<String>().apply {
   repeat(2){ this.add(element = "YourObject($it)") }
 }
Run Code Online (Sandbox Code Playgroud)

用您的对象替换字符串。用你想要的元素数替换 2 。