首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MutableList(5) Kotlin的片段

MutableList(5) Kotlin的片段
EN

Stack Overflow用户
提问于 2022-10-22 13:21:57
回答 3查看 48关注 0票数 0

我对这个片段有个问题

代码语言:javascript
复制
fun main() {
    val list = MutableList(5)
    {
        4
    }
    println(list) 
}

这个片段将打印[4, 4, 4, 4, 4]

代码语言:javascript
复制
fun main() {
    val list = MutableList(5)
    {
        index -> 4 + index
    }
    println(list) 
}

这个片段将打印4,5,6,7,8

我想问的是,这可能是非常愚蠢的。如果我们使用与上面相同的代码片段,是否有一种方法可以创建自定义列表(如[4, 6, 7, 9, 10] )

我试着使用[4, 6, 7, 9, 10](4, 6, 7, 9, 10),或者4, 6, 7, 9, 104; 6; 7; 9; 10,它只是不起作用。

如果我使用4; 6; 7; 9; 10,列表将打印

代码语言:javascript
复制
[10, 10, 10, 10, 10]

如果有人愿意帮忙的话,下面的这个片段根本不管用

代码语言:javascript
复制
fun main() {
    val list = MutableList(5)
    {
        //[4, 6, 7, 9, 10]
        //(4, 6, 7, 9, 10)
        //4, 6, 7, 9, 10
        4; 6; 7; 9; 10
    }
    println(list) 
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-22 18:42:56

您有几个答案,告诉您如何使用listOf/mutableListOf显式定义列表,并通过链接(我无法访问)回答它们,并询问如何从标准输入中读取。我假设这意味着你的问题没有得到回答,你试图澄清你要问的是什么,所以我会在你的回复中解释代码中发生了什么,以防它有助于澄清问题。

代码语言:javascript
复制
// on each line single numbers from 1 to 5
val numbers = MutableList(5) { readln().toInt() } 
println(numbers) // [1, 2, 3, 4, 5]

MutableList(5) { //some function }是一个列表生成器函数(这里的文件) --第一个参数是要生成的列表的大小。

第二个参数是被调用以生成每个项的函数。它有一个参数(通常称为it,除非您重命名它),它包含正在生成的项的索引。您可以使用它来根据它们在列表中的位置来生成值,例如,奇数列表的(it * 2) + 1

但是您不必使用这个索引值--您可以为每个项生成一个静态值,或者从任何您喜欢提供值的地方提取数据。这就是readln()所做的--每当函数运行以生成五项中的一项时,它就从标准输入中读取一行。您还可以从Iterator中提取下一项,从Random生成器读取值,从API中请求一些内容--任何您想要的内容。重要的是返回一个值,因此函数中的代码充当表达式,并返回一个值作为列表中的项。

所以如果你真的想,你可以这样做:

代码语言:javascript
复制
// using an iterator because it has state, i.e. it remembers where it's up to in the list
val stuff = listOf("1", "4", "6", "7", "2").iterator()

fun main() {
   val myList = List(5) { stuff.next().toInt() }
   println(myList)
}

它的功能与从标准输入读取相同,只是它轮询stuff迭代器的值。

票数 0
EN

Stack Overflow用户

发布于 2022-10-22 15:20:18

如果您想要一个只包含4, 6, 7, 9, 10的可变列表,最直接的方法是使用mutableListOf创建它

代码语言:javascript
复制
val list = mutableListOf(4, 6, 7, 9, 10)

这将创建一个大小为5的MutableList,其值为4、6、7、9、10。除非您需要进行某种计算,或者所有元素都是相同的,否则就不需要使用索引lambda构造来创建它。

票数 2
EN

Stack Overflow用户

发布于 2022-10-22 13:32:21

如果你仔细看看这个数列:4, 6, 7, 9, 10

你可以看到,在第一个值和第二个值之间,有一个2的增量。在第二个和第三个值之间,有一个1的增量,然后又是一个2的增量,以此类推。

您可以使用以下方法创建这样的列表:

代码语言:javascript
复制
val list = MutableList(5)
{
    index -> 4 + index + (index and 1) + (index / 2)
}

它将产生

代码语言:javascript
复制
4 + 0 + (0 and 1) + (0 / 2) == 4 + 0 + 0 + 0 == 4
4 + 1 + (1 and 1) + (1 / 2) == 4 + 1 + 1 + 0 == 6
4 + 2 + (2 and 1) + (2 / 2) == 4 + 2 + 0 + 1 == 7
... etc ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74163920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档