首页 > 解决方案 > 计算 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 版本。谢谢。

标签: 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)]

推荐阅读