【发布时间】:2017-01-08 02:05:35
【问题描述】:
我基本上需要知道我的 HashMap 是否有不同的键映射到相同的值。我想知道除了对照地图中的所有其他值检查每个键值之外,是否还有其他方法。
更新: 只是一些更多的信息,希望能澄清我想要完成的事情。考虑一个字符串“azza”。假设我正在迭代这个字符串并将每个字符存储为一个键,它的对应值是其他一些字符串。假设我最终到达了“a”的最后一次出现,并且该值已经在地图中。如果与地图中已经存在的值对应的键也是“a”,那就没问题了。当“a”和“z”都映射到相同的值时,就会出现我的问题。仅当不同的键映射到相同的值时。
【问题讨论】:
-
获取值集合,将其转换为
HashSet,查看集合大小是否小于值集合大小。这假设值对象具有合适的equals()和hashCode()实现。 -
经过深思熟虑后,我认为如果不简单地检查每个值与所有其他值,我想要完成的工作是不可能的。例如,如果我有字符串“dddd”。当我遍历字符串并将每个字符映射到其他字符串时,如果所有出现的“d”都映射到诸如“apples”之类的值,那就没问题了。我的地图最终会得到一个键和一个值。只有当“ddad”之类的东西和“a”和“d”都映射到“apples”时