热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用HashMap作为另一个HashMap的键

如何解决《使用HashMap作为另一个HashMap的键》经验,为你挑选了1个好方法。

我有一个要求,我需要使用一组值映射一组配置,理想情况下由Map, 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, Map>让您根据需要得出结构.你可能会得到更好的答案问题.


推荐阅读
author-avatar
阴森森林蛀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有