gpt4 book ai didi

Kotlin - 替换 map 中的项目

转载 作者:行者123 更新时间:2023-12-02 12:34:21 25 4
gpt4 key购买 nike

我正在编写一个函数来替换 map 中的项目。我已经使用 HashMap 达到了它,但是可以用“kotlinmatic 方式”编写类似的东西吗?

fun HashMap<Int, String>.ignoreFields(path: String, fieldsToIgnore: FieldsToIgnore) = {
val filtered: List<Field> = fieldsToIgnore.ignoreBodyFields.filter { it.tagFile == path }

filtered.forEach {
val updatedJson = JsonPath.parse(JsonPath.parse(this[it.order])
.read<String>(whatevervariable))
.delete(it.field)
.apply { set("equalJson", this) }
.jsonString()

this.replace(it.order, updatedJson)
}

return this
}

使用基于答案的 map 进行更新:

fun Map<Int, String>.ignoreFields(path: String, fieldsToIgnore: FieldsToIgnore): Map<Int, String> {
val filtered = fieldsToIgnore.ignoreBodyFields.filter { it.tagFile == path }

return this.mapValues {m ->
val field = filtered.find { it.order == m.key }

if (field != null) {
JsonPath.parse(JsonPath.parse(this[field.order])
.read<String>(whatevervariable))
.delete(field.field)
.apply { set(pathBodyEqualToJson, this) }
.jsonString()
} else {
m.value
}
}
}

最佳答案

您可以使用mapValues有条件地为同一键使用不同的值。这将返回一个新的不可变映射

更新:filtered 现在将是 orderupdatedJson 的映射

fun HashMap<Int, String>.ignoreFields(path: String,
fieldsToIgnore: FieldsToIgnore): Map<Int, String> {
val filtered: Map<Int, String> = fieldsToIgnore.ignoreBodyFields
.filter { it.tagFile == path }
.map {
val updatedJson = JsonPath.parse(JsonPath.parse(this[it.order])
.read<String>(whatevervariable))
.delete(it.field)
.apply { set("equalJson", this) }
.jsonString()
it.order to updatedJson
}
return this.mapValues {
filtered.getOrElse(it.key) { it.value }
}
}

关于Kotlin - 替换 map 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64020009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com