Конвертировать HashMap в IntArray при фильтрации некоторых ключей - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь реализовать простой алгоритм в 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 = ...

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Вот полный алгоритм, который не включает подсчет экземпляров:

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)
    }
}
0 голосов
/ 07 июня 2018

Вы можете использовать filter и деструктурировать ввод в ключ и значение, как показано ниже:

val uniqueArray: IntArray = map
            .filter { (k, v) -> v == 1 }
            .keys
            .toIntArray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...