创建一个列表 os Kotlin with de result of a repeat function

Create a list os Kotlin with de result of a repeated function

提问人:Sergio76 提问时间:1/10/2022 最后编辑:mkrieger1Sergio76 更新时间:7/11/2023 访问量:512

问:

我有一个很长的方法,它创建一个列表,其中包含一个函数的结果,该函数将两个数字相加:

private fun Add(one: Int, two:Int) : Int {

 return one + two
}

private val myList = listOf(
 Add(1, 2),
 Add(2, 3),
 Add(3, 4),
 Add(4, 5),
 Add(5, 6),
 Add(6, 7),
 Add(8, 9),
 ...
)

在 kotlin 中,有没有办法在不总是重复“add”函数名称的情况下创建此列表?

我尝试过使用“with”和“apply”,但我认为我没有正确使用它。

Android 列表 循环 Kotlin 参数传递

评论

0赞 Sergio 1/10/2022
它会起作用吗?private val myList = listOf(3, 5, 7, 9, 11, 13, 17, ...)
0赞 Sergio76 1/10/2022
不,函数“Add”有两个参数。该列表包含两个参数之和的结果
0赞 Sergio 1/10/2022
你如何使用函数有一些模式吗?是斐波那契数列吗?Add
0赞 Sergio 1/10/2022
你如何确定应该添加哪些数字?
0赞 Sergio76 1/10/2022
是随机生成的数字:)

答:

1赞 Sergio 1/10/2022 #1

如果数字是随机生成的,那么你可以使用一些循环来填充列表,例如:

private val myList = genarateAndAdd(20)

private fun generateAndAdd(count: Int): List<Int> {
    val list = mutableListOf<Int>()
    repeat(count) {
        list.add(Add(Random.nextInt(), Random.nextInt()))
    }
    return list
}

其中 是列表的大小。countmyList

1赞 bylazy 1/10/2022 #2

您可以使用以下功能:

import java.util.Random

val random = Random()

val myList = (0..<size of your list>).map{add(random.nextInt(), random.nextInt())}
1赞 Ivo 2/10/2022 #3

而不是这个

private val myList = listOf(
    Add(1, 2),
    Add(2, 3),
    Add(3, 4),
    Add(4, 5),
    Add(5, 6),
    Add(6, 7),
    Add(8, 9)
)

你可以这样写

private val myList = listOf(
    1, 2,
    2, 3,
    3, 4,
    4, 5,
    5, 6,
    6, 7,
    8, 9
).chunked(2).map { Add(it[0],it[1]) }
1赞 Andriy Kryvtsun 7/11/2023 #4

可以通过 Kotlin 单行获取所需列表

val myList = List(<size of your list>) { n -> Add(n, n+1) }