Map:如何获取与某个值关联的所有键?
给定一个 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 其中值不唯一。
Given a Map, how do I look up all keys associated with a particular value?
For example:
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}
I'm looking for something similar to Google Collections' BiMap where values are not unique.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用普通的 java.util.Map 实现,恐怕您必须迭代映射条目并测试每个值:
如果您想要更好的性能,您可能需要构建从值到列表的并行映射的钥匙。我不知道有任何现有的集合可以做到这一点,但实施起来应该不难。
从 Java 8 开始,您可以使用 map.forEach:
With plain
java.util.Map
implementations, I am afraid you must iterate through the map entries and test each value:If you want better performance, you may want to build up a parallel mapping from values to lists of keys. I don't know of any existing collection doing this, but it should not be difficult to implement.
From Java 8 onwards you can use map.forEach: