如何在 Hashmaps Kotlin 中允许重复键?

hag*_*mad 7 hashmap kotlin

我需要一个允许重复键的 hashmap 的 kotlin 代码

class HashMap<K, V> : MutableMap<K, V>
Run Code Online (Sandbox Code Playgroud)

App*_*pyx 9

List你想要的可以通过包含 s 的a 来实现Pair

val mapWithDuplicateKeys = listOf(
            KEY1 to VALUE1
            KEY1 to VALUE2
            KEY2 to VALUE3
    )
Run Code Online (Sandbox Code Playgroud)

或者简单地添加到列表中:

val mapWithDuplicateKeys=mutableListOf<Pair<String,String>>()
mapWithDuplicateKeys.add(KEY1 to VALUE1)
mapWithDuplicateKeys.add(KEY1 to VALUE2)
mapWithDuplicateKeys.add(KEY2 to VALUE3)
Run Code Online (Sandbox Code Playgroud)

检查是否包含条目如下:

mapWithDuplicateKeys.any { it.first==KEY1 && it.second==VALUE1 } //true
mapWithDuplicateKeys.any { it.first==KEY1 && it.second==VALUE3 } //false
Run Code Online (Sandbox Code Playgroud)

删除条目就像:

mapWithDuplicateKeys.removeIf { it.first == KEY1 && it.second == VALUE1 }
Run Code Online (Sandbox Code Playgroud)

检索条目就像:

val valuesMatchingKEY1 = mapWithDuplicateKeys.filter { it.first== KEY1 }.map{it.second}
Run Code Online (Sandbox Code Playgroud)

当然,您始终可以创建一个新类并用简单的方法包装所有上述功能:)


Ten*_*r04 2

假设您的键和值都是字符串,您可以创建一个MutableMap<String, MutableList<String>>.

val eventsBySubject = mutableMapOf<String, MutableList<String>>()

// Adding a value "physics" for key "test":
eventsBySubject.getOrPut("test", ::mutableListOf).add("physics")

// Getting all the values for a key "quiz":
val quizzes: List<String> = eventsBySubject["quiz"].orEmpty()

// Removing a single value "lab" for key "test":
eventsBySubject["test"]?.remove("lab")
Run Code Online (Sandbox Code Playgroud)