首页 > 解决方案 > Kotlin:删除数组中相同的相邻成员

问题描述

如果我有以下数组:

[1,1,1,2,2,1,1,1,1,2,2,3]

Kotlin 中是否有任何内置方法可以过滤掉具有相同值的相邻元素,从而导致:

[1,2,1,2,3]

保留订单很重要。

PS我的实际用例不是整数,它是一个实现等于的对象。

标签: kotlin

解决方案


我认为没有标准功能可以做到这一点。但是很容易构建一个mapOrNull

fun <T : Any> Iterable<T>.removeAdjacent(): List<T> {
    var last: T? = null
    return mapNotNull {
        if (it == last) {
            null
        } else {
            last = it
            it
        }
    }
}

推荐阅读