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}
吗?是的!我将编辑我的答案,感谢您注意:)这是一个答案,目前已被删除)