Mac*_*tow 1 java lambda java-8
我有一个嵌套的地图 Map<String, Map<String, Map<String, ...>
我如何使用Java 8 lambdas在地图上导航.这里可能的必要解决方案:
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;
}
Run Code Online (Sandbox Code Playgroud)
正如评论中所指出的那样,我完全不了解这一点.应将json文档转换为适当类型的Java对象,而不是某些高度嵌套的对象Map<String, Map<String, Map<String, ...>>>.
即使没有lambda表达式,这将需要选中铸件从Object到Map<String, Object>,并且它可以很容易地在运行时以失败ClassCastException.
在这之上添加lambdas会增加额外的复杂性,因为lambda体中使用的变量必须是最终的,而head在每个阶段都要重新分配.你可以使用长度为1的数组来解决这个问题.
结果代码很可怕(我不建议这样做),但它实现了你所要求的:
Object[] head = {mainMap};
Stream.of(key.split(".")).forEach(s -> {
head[0] = ((Map<String, ?>) head[0]).get(s);
});
return head[0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |