如何使用Kotlin在for循环中创建变量

时间:2019-06-27 20:55:14

标签: kotlin

鉴于参数size中的最大列表大小和参数elements中的元素总数,我需要创建一个列表列表。在Kotlin的for循环中创建变量的语法是什么?

我考虑的解决方法是在将元素添加到列表之前声明并创建列表。然后,当列表达到最大容量时,将其切换为空的下一个列表。

这是半生不熟的代码:

fun listOfLists(size: Int, vararg elements: String): List<List<String>> {
    var amountOfElements = elements.size
    var currentSubList: List<String> = mutableListOf<String>()
    val numberOfLists: Int = amountOfElements / size + 1

    for (n in 0..numberOfLists) {
        // Code for creating the total number of lists needed
    }

    for (e in elements) {
        if (amountOfElements % size == 0) {
            // Code for switching lists
        }
        amountOfElements--
    }

1 个答案:

答案 0 :(得分:1)

正如@dyukha正确提到的那样,您需要的是chunked()函数。

fun listOfLists(size: Int, vararg elements: String) = 
   elements.asList().chunked(size)

或者,如果您想真正提高效率,也可以使用asSequence()

fun listOfLists(size: Int, vararg elements: String) =
    elements.asSequence().chunked(size)

chunked()Array上不起作用,因为它们是在IterableSequence上定义的,而Array没有实现它们中的任何一个。 / p>