我需要一份Kotlin代码,用于实现允许重复键的哈希表。
class HashMap<K, V> : MutableMap<K, V>
Pair
的 List
来实现您想要的功能:val mapWithDuplicateKeys = listOf(
KEY1 to VALUE1
KEY1 to VALUE2
KEY2 to VALUE3
)
或者直接将其添加到列表中:
val mapWithDuplicateKeys=mutableListOf<Pair<String,String>>()
mapWithDuplicateKeys.add(KEY1 to VALUE1)
mapWithDuplicateKeys.add(KEY1 to VALUE2)
mapWithDuplicateKeys.add(KEY2 to VALUE3)
检查是否包含某些条目的代码示例如下:
mapWithDuplicateKeys.any { it.first==KEY1 && it.second==VALUE1 } //true
mapWithDuplicateKeys.any { it.first==KEY1 && it.second==VALUE3 } //false
删除条目的操作就像:
mapWithDuplicateKeys.removeIf { it.first == KEY1 && it.second == VALUE1 }
获取条目的方式如下:
val valuesMatchingKEY1 = mapWithDuplicateKeys.filter { it.first== KEY1 }.map{it.second}
当然,您总是可以创建一个新类并使用简单的方法包装上述所有功能 :)
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")
MutableList<Pair<K,V>>
或MutableMap<K,MutableList<V>>
代替。 - Tenfour04