我对这个片段有个问题
fun main() {
val list = MutableList(5)
{
4
}
println(list)
}这个片段将打印[4, 4, 4, 4, 4]
和
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, 10或4; 6; 7; 9; 10,它只是不起作用。
如果我使用4; 6; 7; 9; 10,列表将打印
[10, 10, 10, 10, 10]如果有人愿意帮忙的话,下面的这个片段根本不管用
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)
}发布于 2022-10-22 18:42:56
您有几个答案,告诉您如何使用listOf/mutableListOf显式定义列表,并通过链接(我无法访问)回答它们,并询问如何从标准输入中读取。我假设这意味着你的问题没有得到回答,你试图澄清你要问的是什么,所以我会在你的回复中解释代码中发生了什么,以防它有助于澄清问题。
// 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中请求一些内容--任何您想要的内容。重要的是返回一个值,因此函数中的代码充当表达式,并返回一个值作为列表中的项。
所以如果你真的想,你可以这样做:
// 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迭代器的值。
发布于 2022-10-22 15:20:18
如果您想要一个只包含4, 6, 7, 9, 10的可变列表,最直接的方法是使用mutableListOf创建它
val list = mutableListOf(4, 6, 7, 9, 10)这将创建一个大小为5的MutableList,其值为4、6、7、9、10。除非您需要进行某种计算,或者所有元素都是相同的,否则就不需要使用索引lambda构造来创建它。
发布于 2022-10-22 13:32:21
如果你仔细看看这个数列:4, 6, 7, 9, 10
你可以看到,在第一个值和第二个值之间,有一个2的增量。在第二个和第三个值之间,有一个1的增量,然后又是一个2的增量,以此类推。
您可以使用以下方法创建这样的列表:
val list = MutableList(5)
{
index -> 4 + index + (index and 1) + (index / 2)
}它将产生
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 ...https://stackoverflow.com/questions/74163920
复制相似问题