如果您想添加一个小写的键还没有在映射中,您可以使用一个谓词对键应用过滤器,该谓词将所有键都小写。如果谓词没有返回结果,您可以插入该对,否则不返回。
类似的东西:
private fun addIfNotLowerExists(map: MutableMap<String, String>, candidate: Pair<String, String>) {
if (map.filter { s -> s.key.toLowerCase().equals(candidate.first.toLowerCase()) }.keys.isEmpty()) {
map[candidate.first] = candidate.second
}
}
下面是代码的运行示例:
fun main(args: Array<String>) {
val map = mutableMapOf<String, String>(Pair("k1", "v1"), Pair("K2", "v2"))
addIfNotLowerExists(map, Pair("k2", "v2_1"))
addIfNotLowerExists(map, Pair("k3", "v3"))
println(map)
}
private fun addIfNotLowerExists(map: MutableMap<String, String>, candidate: Pair<String, String>) {
if (map.filter { s -> s.key.toLowerCase().equals(candidate.first.toLowerCase()) }.keys.isEmpty()) {
map[candidate.first] = candidate.second
}
}
打印出来:
{k1=v1, K2=v2, k3=v3}
如您所见,值对 {k2:v2_1} 未插入,因为键 K2 已在映射中。