我需要一个允许重复键的 hashmap 的 kotlin 代码
class HashMap<K, V> : MutableMap<K, V>
Run Code Online (Sandbox Code Playgroud)
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)
当然,您始终可以创建一个新类并用简单的方法包装所有上述功能:)
假设您的键和值都是字符串,您可以创建一个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)
| 归档时间: |
|
| 查看次数: |
5967 次 |
| 最近记录: |