разделить список на группы размера N - PullRequest
0 голосов
/ 30 ноября 2018

Каков идиоматический способ взять список и сгруппировать его в кортежи размером n?

Например: сгруппировать по 3 с тройным

val list = listOf(1,2,3,4)
val partitioned = list.groupsOf(3)

// partitioned[0] = List<Int> 1, 2, 3
// partitioned[1] = List<Int> 4

, но желательно что-то вроде этого

val list = listOf(1,2,3,4)
val newList = mutableListOf()

list.forGroupsOf(3) { triple: Triple<Int?> ->
    newList.add( triple )
}

// partitioned[0] = Triple<Int?> 1, 2, 3
// partitioned[1] = Triple<Int?> 4, null, null 

ПРИМЕЧАНИЕ: List.groupsOf и List.forGroupsOf Я восполнил этот пример

1 Ответ

0 голосов
/ 30 ноября 2018

Kotlin предоставляет функцию с именем chunked(n), которая создает список списков с n элементами каждый:

val list = listOf(1, 2, 3, 4)
val tuples = list.chunked(2).map { Tuple(it[0], it[1]) }

Или, альтернативно:

val list = listOf(1, 2, 3, 4)
val tuples = list.chunked(2) { Tuple(it[0], it[1]) }

Сохранитьпомните, что это создает списки с max n элементами.

...