【发布时间】:2017-07-06 17:59:57
【问题描述】:
我有一个要求,我需要用一组值映射一组配置,最好用Map<Map<String, Object>, Map<String, Object>> 结构表示。
主地图的配置和值部分都是任意的,因此我无法使用具体的类。
请提供有关此结构的一些反馈。一个 Map 可以用作另一个 Map 的键吗?通过一些研究,我能够确定 Map 的 equals 方法利用所有底层键和值来将两个 Map 视为相等。此外,Map 的 HashCode 是基于 Map 的 Keys 的 Hashcode。这个 IMO 应该足以满足使用 Map 作为键的最低要求。
在我继续实施之前,我仍然希望有人对此进行验证。如果有人可以建议更好的解决方案/设计,请随时这样做。
编辑
我最终使用了一个简单的波浪号 ('~') 和管道 ('|') 分隔的字符串作为键,并在需要时解构它。感谢所有帮助过的人。
【问题讨论】:
-
你没有这个要求。你只是认为你做了。
-
您可能会以某种方式将其破解,但我认为您应该退后一步并 100% 确定您不能使用 String 或 Pojo 作为密钥。
-
组合地图是一个线索,您应该创建一些单独的类。
-
"我最终使用了一个简单的波浪号 ('~') 和竖线 ('|') 分隔的字符串" 字符串类型的键让我很难过 :'( - if您有结构化数据,使用结构化类型(即专用键类型),不要将该结构分解为字符串。`@AutoValue 可以很容易地快速定义此类类型。
标签: java collections hashmap