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