计算ArrayList(Kotlin)中的连续重复值

时间:2020-08-27 01:07:19

标签: kotlin

我想确定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版本。谢谢。

1 个答案:

答案 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)]
相关问题