输入有一个对象列表
["яблоко","груша","абрикос","помидор","арбуз"]
输出应该是这样的
[["яблоко","груша"],["абрикос","помидор"],["арбуз"]]
那些。连续的对被打包到单独的列表中。
这样做了
fun <T> List<T>.toPairs(): List<List<T>> =
mapIndexed { index, t -> Pair(index, t) }
.groupBy { it.first / 2 }
.map { it.value.map { it.second } }
但不知何故,我不喜欢一堆转换:
List<T>
-> List<Pair<Int, T>>
-> Map<Int, List<Pair<Int, T>>>
-> Map<Int, List<T>>
-> List<List<T>>
也许更容易一些?
PS我感兴趣的是转换链,而不是带有一堆临时变量的循环-这就是我自己所知道的
事实上,一切都很简单。我们需要获得成对的元素并剔除多余的元素。或多或少是这样的:
input输入叶子在哪里。做同样的事情的另一种方法 -
注意
partialWindows——这个参数决定是否保存没有足够元素的工作表——例如1,而不是2。UPD
问题最简单的解决方案(感谢zRrr)
自 Kotlin 1.2 以来,上述所有内容一直有效