我想确定Kotlin中ArrayList中连续重复的String的数量。
我所拥有的与以下类似:
val array: ArrayList<String> = arrayListOf("training", "training", "assessment", "training", "assessment", "assessment")
我想要的输出是对连续重复元素进行计数的内容,例如:
[["training", "2"], ["assessment", "1"], ["training", "1"], ["assessment", "2"]
或更简单/更干净的东西。
我在Python Counting consecutive duplicates of strings from a list中找到了类似的解决方案。但是我正在寻找Kotlin版本。谢谢。
答案 0 :(得分:2)
您可以手动构建列表,如下所示:
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)]