У меня есть два объекта JsonNode, которые являются массивами, возвращаемыми вызовами API, и выглядят так:
exportedNodeArray:
[
{"key":"111", "value":"aaa"},
{"key":"222", "value":"bbb"},
{"key":"333", "value":"ccc"}
]
localNodeArray
[
{"key":"999", "value":"aaa"},
{"key":"888", "value":"bbb"},
{"key":"777", "value":"ccc"}
]
Требуется выводКарта любых ключей, которые соответствуют одинаковым значениям в каждом массиве.Значения гарантированно будут уникальными в пределах массива.
"111"="999"
"222"="888"
"333"="777"
Эта функция возвращает правильный результат, но выглядит очень не элегантным способом сделать это.
fun mapIds(exportedNodeArray: JsonNode, localNodeArray: JsonNode) : MutableMap<String, String?> {
val localMap = mutableMapOf<String, String>()
localNodeArray.forEach {
localMap[it["value"].asText()] = it["key"].asText()
}
val idMap = mutableMapOf<String, String?>()
exportedNodeArray.forEach {
idMap[it["key"].asText()] = localMap[it["value"].asText()]
}
return idMap
}
IЯ новичок в Kotlin, и хотел бы понять более функциональный подход.Особенно, если есть способ получить доступ к элементам JsonNode по значению атрибута и выполнить это за один цикл или вызов карты.