我有一个将键与字符串相关联的 HashMap,我需要将一些字符串相互比较。但是,某些字符串可能在也可能不在 HashMap 中。
示例:假设我有 4 个字符串,如果可能的话,我打算将它们相互比较,但其中只有 3 个最终出现在 HashMap 中。如何比较存在的字符串而不尝试将它们与不存在的字符串进行比较,并且不做一堆嵌套的 if 和 else?
编辑:Alohci 的解决方案既简单又快速,而且很有效。
循环遍历 HashMap 的 .values 集合存储第一个条目。将每个剩余条目与存储的条目进行比较。一旦你找到一个不匹配的,抛出你的错误。如果您到达循环的末尾,则所有字符串都匹配。
听起来您需要一个反向映射,将所有值映射到它们的键集。
Map<Key,Value> forwardMap;
Map<Value, Set<Key> reverseMap;
然后,您可以查看您正在查看的所有条目是否都在集合中。确保在添加/删除正向映射时放入反向映射。
这种方法的好处是,测试将是 O(n),其中 n 是您正在测试的键的大小,而不是 O(m),其中 m 是前向映射的大小。