kotlin - 计算 ArrayList (Kotlin) 中的连续重复值
问题描述
我想确定 Kotlin 中 ArrayList 中连续重复字符串的数量。我所拥有的大致如下:
val array: ArrayList<String> = arrayListOf("training", "training", "assessment", "training", "assessment", "assessment")
我想要的输出是计算连续重复元素的东西,比如:
[["training", "2"], ["assessment", "1"], ["training", "1"], ["assessment", "2"]
或者更简单/更干净的东西。
我在 Python Counting continuous duplicates of strings from a list中找到了类似的解决方案。但我正在寻找 Kotlin 版本。谢谢。
解决方案
您可以手动构建列表,如下所示:
fun count(values: List<String>): List<Group> {
val groups = mutableListOf<Group>()
values.forEach {
val last = groups.lastOrNull()
if (last?.value == it) {
last.count++
} else {
groups.add(Group(it, 1))
}
}
return groups
}
data class Group(val value: String, var count: Int)
这导致:
[Group(value=training, count=2), Group(value=assessment, count=1), Group(value=training, count=1), Group(value=assessment, count=2)]
推荐阅读
- mongodb - MongoDB - 集群没有自动发现
- excel - 如何为特定目的创建宏
- java - 无法从同一类中的方法访问类属性 ArrayList 的值
- if-statement - 嵌套 If 语句 SSRS 表达式
- excel - 执行这个宏需要很长时间,可以做些什么来加快它的速度?
- c# - C# / .NET 保持命名管道打开并支持任意数量的并行连接客户端
- javascript - 重定向到函数 React Router Dom 中的路由
- python - celery 上的 python 工作者 (crawler + save db) 的最佳设置
- r - 如何使用 geom_text() 标记 geom_bar(position = 'fill')
- python - 平滑拟合函数