






















这是一个创建于 1884 天前的主题,其中的信息可能已经有所发展或是发生改变。
是不是我姿势不对,有没有更好的写法?
val kotlin = "ABCDEF".asSequence()
.groupingBy {
println("grouping")
it.toInt() / 10
}
.aggregate { _, accumulator: MutableList<String>?, element, first ->
println("aggregate")
if (first) {
val tmp = MutableList(0) { "" }
tmp.add(element.toString() + "X")
tmp
} else {
accumulator!!.add(element.toString() + "X")
accumulator
}
}
println(kotlin)
val java = "ABCDEF".toList().stream()
.collect(
Collectors.groupingBy(
{ println("java grouping"); it.toInt() / 10 },
Collectors.mapping({ println("java mapping"); it.toString() + "X" }, Collectors.toList())
)
)
println(java)
1 Leviathann 2021 年 4 月 18 日 via iPhone发现原来把 MutableList 改成 mutableList 就能直接生成空列表,请大家忽略那行。。 |
2 weimo383 2021 年 4 月 18 日 via Android什么叫 grouping 。。。 |
3 SoloCompany 2021 年 4 月 18 日.fold({ _, _ -> mutableListOf<String>() }) { _, accumulator, it -> 或者 .aggregate { _, accumulator: MutableList<String>?, it, _ -> 你自己选一个 |
4 SoloCompany 2021 年 4 月 18 日不介意一点点性能损失的话, 还可以直接用 List 避免用 MulitableList .fold(listOf<String>()) { accumulator, it -> |
5 Leviathann 2021 年 4 月 18 日@weimo383 就是 java stream 的 Collector.groupingBy + Collector.mapping @SoloCompany 不可变 list 重载的 + 居然是每次生成新的列表然后把原 list 和被 + 的元素都放进去,这也太暴力了。。 |
6 SoloCompany 2021 年 4 月 18 日@Leviathann #5 增加了 kotlin.collections.Grouping 这一层接口的中间抽象明显优于 java8 stream 的 Collector 啊 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。