Как создать переменные в цикле for с Kotlin - PullRequest
0 голосов
/ 27 июня 2019

Учитывая максимальный размер списка в параметре size и общее количество элементов в параметре elements, мне нужно создать список списков. Каков синтаксис для создания переменных в for циклах в Kotlin?

Я думаю об этом, чтобы объявить и создать списки, прежде чем элементы будут добавлены в список. Затем, когда список достиг полной емкости, он переключается на следующий пустой список.

Вот недоделанный код:

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 Ответ

1 голос
/ 28 июня 2019

Как правильно заметил @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, потому что этоопределены в Iterable и Sequence, а Array не реализует ни один из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...