给定一个 Map,如何查找与特定值关联的所有键?
例如:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 5);
map.put(2, 2);
map.put(3, 5);
Collection<Integer> keys = map.values(5); // should return {1, 3}
我正在寻找类似于 Google Collections 的内容BiMap http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/BiMap.html其中值不是唯一的。
与平原java.util.Map
实现,恐怕您必须迭代映射条目并测试每个值:
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue().equals(desiredValue) {
keys.add(entry.getKey());
}
}
如果您想要更好的性能,您可能需要构建从值到键列表的并行映射。我不知道有任何现有的集合可以做到这一点,但实施起来应该不难。
从 Java 8 开始,您可以使用 map.forEach:
map.forEach((k,val) -> {
if (val.equals(desiredValue) {
keys.add(k);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)