我有一个哈希图,其中字符串作为键,整数作为值。我希望按键不区分大小写。
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 作为单独的条目
为此,您需要提供一些扩展函数,以某种定义的方式放置和获取条目(例如,每次使用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)
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |