获取列表并将其分组为大小为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
是我为这个示例准备的
答案 0 :(得分:1)
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个元素的列表。