我看到 #filter
定义于 Map
,但我无法弄清楚如何使用它。有人愿意分享一个例子吗?
我有一个深度嵌套的 TreeMap 实例 ( TreeMap<String, Map<String, Map<*, *>>>
),我想要 filter/find
第一个(在域中是唯一的)顶级键,具有与值中更深层次的东西相关联的某些特征。
数据如下所示:
{
"i1": {
"aliases": {}
},
"i2": {
"aliases": {}
},
"i3": {
"aliases": {}
},
"i4": {
"aliases": {
"alias-im-looking-for": {}
}
}
}
我现在有以下非功能性代码可以解决它:
val indexToAliasMappingType = LinkedTreeMap<String, Map<String, Map<*, *>>>()
val indexToAliasMappings = Gson().fromJson(response.jsonString, indexToAliasMappingType.javaClass)
var currentIndexName = ""
for ((index, aliasMappings) in indexToAliasMappings) {
val hasCurrentAlias = aliasMappings.get("aliases")?.containsKey(alias)
if (hasCurrentAlias != null && hasCurrentAlias) {
currentIndexName = index
}
}
return currentIndexName
最佳答案
看起来您需要的是符合您条件的第一个条目的关键部分。像这样的东西(有意单行)应该会有所帮助:
val currentIndexName = indexToAliasMappings.filterValues { it["aliases"]?.containsKey(alias) ?: false }.keys.firstOrNull() ?: ""
关于java - 如何在 Kotlin 的 Map 实例上使用 `filter`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40533722/