作者:阴森森林蛀 | 来源:互联网 | 2023-02-11 15:54
我有一个要求,我需要使用一组值映射一组配置,理想情况下由Map
结构表示.
主Map的配置和值部分都是任意的,因此,我无法使用具体的类.
请提供一些有关此结构的反馈.可以将地图用作另一个地图的关键字.做了一些研究,我能够确定Map的equals方法利用所有底层的Keys&Values来将两个Maps视为相等.此外,Map的HashCode基于Map的Keys的Hashcodes.这个IMO应该满足使用Map作为关键字的最低要求.
在我继续实施之前,我仍然希望有人来验证这一点.如果有更好的解决方案/设计,有人可以建议,请随时这样做.
编辑
我最终使用简单的代字号('〜')和管道('|')分隔String作为键并在需要时对其进行解构.感谢所有帮助过的人.
1> dimo414..:
是的,a HashMap
可以用作另一个地图的关键,因为该类正确覆盖.equals()
和.hashCode()
.
然而,从广义上讲,使用可变类型(例如HashMap
)作为Map
键或Set
元素是一个坏主意,因为如果对象在集合中发生变异,则会违反这些类所期望的不变量.
当你正在寻找不太什么,番石榴提供了几个额外的数据结构,例如Multiset
,MultiMap
,BiMap
,Table
这可能是有用的.它们还提供不可变的集合,例如ImmutableMap
(因为它们不能被变异)更安全地用作Map
密钥.这并不是说你应该这样做,只是说它是安全的(如果键和值也是不可变的).
考虑发布一个探索问题的问题,这个问题可以Map
让您根据需要得出结构.你可能会得到更好的答案是问题.