hashmap kotlin 的键不区分大小写?

WIS*_*SHY 3 hashmap kotlin

我有一个哈希图,其中字符串作为键,整数作为值。我希望按键不区分大小写。

val items = HashMap<String, Int>()
    items["key1"] = 90
    items["Key1"] = 80
    items["C"] = 70
    for ((k, v) in items) {
        println("$k = $v")
    }
Run Code Online (Sandbox Code Playgroud)

这将 key1 和 Key1 作为单独的条目

m.a*_*icz 9

为此,您需要提供一些扩展函数,以某种定义的方式放置和获取条目(例如,每次使用lowercase()String 的方法),保持键不区分大小写

fun HashMap<String, Int>.putInsensitive(k: String, v: Int) {
    this[k.lowercase()] = v
}

fun HashMap<String, Int>.getInsensitive(k: String, v: Int): Int? = this[k.lowercase()]
Run Code Online (Sandbox Code Playgroud)

或者提供您自己的Map接口实现(它甚至可以继承自 HashMap)

class InsensitiveHashMap<V> : HashMap<String, V>() {
    override fun put(key: String, value: V): V? = super.put(key.lowercase(), value)
    
    override fun get(key: String): V? = return super.get(key.lowercase())
}
Run Code Online (Sandbox Code Playgroud)