gpt4 book ai didi

java - 使用 Java 8 lambda 遍历映射键

转载 作者:行者123 更新时间:2023-11-29 06:56:20 26 4
gpt4 key购买 nike

我有一个嵌套 map Map<String, Map<String, Map<String, ...>

我将如何使用 Java 8 lambda 在 map 上导航。这里可能的命令式解决方案:

Object getObjectWithKey(String key) { // key = "parent.parent1.parent1.1"
Map head = mainMap;

for (String k in key.split(".")){
head = head.get(k);
}

return (Object) head;
}

最佳答案

如评论中所述,我根本不明白这样做的必要性。 json 文档应该转换为适当类型的 Java 对象,而不是一些高度嵌套的 Map<String, Map<String, Map<String, ...>>> .

即使没有 lambda,这也需要来自 Object 的未经检查的转换至 Map<String, Object> , 它很容易在运行时失败并返回 ClassCastException .

在此之上添加 lambda 会增加额外的复杂性,因为 lambda 主体中使用的变量必须有效地最终,而 head在每个阶段重新分配。您可以使用长度为 1 的数组来解决这个问题。

生成的代码很丑陋(我推荐这样做),但它实现了您的要求:

Object[] head = {mainMap};
Stream.of(key.split(".")).forEach(s -> {
head[0] = ((Map<String, ?>) head[0]).get(s);
});
return head[0];

关于java - 使用 Java 8 lambda 遍历映射键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401811/

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