gpt4 book ai didi

java - 替换 Kotlin 原生解决方案中的流收集

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:21:39 24 4
gpt4 key购买 nike

我目前正在使用 Kotlin 函数从具有键值对的 Json 结构中提取映射。

用于构建 map 的 JSON 包含一个标签和一个值:

"values": [
{
"label": "Email",
"value": "email"
},
{
"label": "Social media",
"value": "socialMedia"
},
{
"label": "Word of mouth",
"value": "wordOfMouth"
},
{
"label": "Newspaper",
"value": "newspaper"
}
],

JSON“标签”应成为 map 的键,“值”应成为其值。

这是使用 Java 8 的流收集方法提取 JSON 并将其转换为 map 的代码。

fun extractValue(jsonNode: JsonNode?): Map<String, String> {
val valuesNode = jsonNode?.get("values") ?: mapper.createArrayNode()
return valuesNode.map { Pair(it.get("label")?.asText() ?: "", it.get("value")?.asText() ?: "") }
.stream().collect({ HashMap<String, String>()}, { m, p -> m.put(p.first, p.second) } , { m, p -> })
}

如何用惯用的 Kotlin 编写 stream().collect 部分?你有什么替代品可以替换

stream().collect()

在这种特定情况下?

最佳答案

所以你有一个对列表,你想把它转换成 map ?你可以只更换你的 .stream().collect(...)与 Kotlin 的 toMap() .来自 Kotlin 文档:

fun <K, V> Iterable<Pair<K, V>>.toMap(): Map<K, V>

Returns a new map containing all key-value pairs from the given collection of pairs.

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/to-map.html

关于java - 替换 Kotlin 原生解决方案中的流收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44750602/

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