Collections 过滤某些键时将HashMap转换为IntArray

Collections 过滤某些键时将HashMap转换为IntArray,collections,kotlin,Collections,Kotlin,我试图在Kotlin中实现一个简单的算法,它只在数组中查找唯一的数字 我不知道如何将map转换为uniqueArray,其中元素的值等于1 val array: IntArray = intArrayOf(4, 7, 3, 3, 4, 5) val map: HashMap<Int, Int> = HashMap() for (x in array) map.merge(x, 1, {v, _ -> v + 1}) // convert the map into an In

我试图在
Kotlin
中实现一个简单的算法,它只在数组中查找唯一的数字

我不知道如何将
map
转换为
uniqueArray
,其中元素的值等于1

val array: IntArray = intArrayOf(4, 7, 3, 3, 4, 5)
val map: HashMap<Int, Int> = HashMap()

for (x in array) map.merge(x, 1, {v, _ -> v + 1})

// convert the map into an IntArray
val uniqueArray: IntArray = ...
val数组:IntArray=intArrayOf(4,7,3,3,4,5)
val-map:HashMap=HashMap()
对于(数组中的x)map.merge(x,1,{v,{u->v+1})
//将地图转换成一个完整的阵列
val uniqueArray:IntArray=。。。

您可以使用
过滤器
将输入项分解为键和值,如下所示:

val uniqueArray: IntArray = map
            .filter { (k, v) -> v == 1 }
            .keys
            .toIntArray()

您可以使用
过滤器
并将条目分解为键和值,如下所示:

val uniqueArray: IntArray = map
            .filter { (k, v) -> v == 1 }
            .keys
            .toIntArray()

下面是一个完整的算法,它不涉及实例计数:

val input = intArrayOf(4, 7, 3, 3, 4, 5)

val duplicates = emptySet<Int>().toMutableSet()
val result = emptySet<Int>().toMutableSet()

for (it in input) {
    if (duplicates.contains(it)) {
        continue
    }
    if (!result.add(it)) {
        result.remove(it)
        duplicates.add(it)
    }
}
val输入=intArrayOf(4,7,3,3,4,5)
val duplicates=emptySet().toMutableSet()
val result=emptySet().toMutableSet()
用于(输入中的it){
如果(重复。包含(it)){
持续
}
如果(!result.add(it)){
结果。删除(它)
重复。添加(它)
}
}

这里有一个完整的算法,它不涉及实例计数:

val input = intArrayOf(4, 7, 3, 3, 4, 5)

val duplicates = emptySet<Int>().toMutableSet()
val result = emptySet<Int>().toMutableSet()

for (it in input) {
    if (duplicates.contains(it)) {
        continue
    }
    if (!result.add(it)) {
        result.remove(it)
        duplicates.add(it)
    }
}
val输入=intArrayOf(4,7,3,3,4,5)
val duplicates=emptySet().toMutableSet()
val result=emptySet().toMutableSet()
用于(输入中的it){
如果(重复。包含(it)){
持续
}
如果(!result.add(it)){
结果。删除(它)
重复。添加(它)
}
}

已经解决了。谢谢!可以用
.keys
替换
.map{(k,v)->k}
吗?是的!我将编辑我的答案,感谢您注意到:)这是在一个答案,目前已删除)工作。谢谢!可以用
.keys
替换
.map{(k,v)->k}
吗?是的!我将编辑我的答案,感谢您注意:)这是一个答案,目前已被删除)