有没有办法找出我的HashMap<String, String>
是否包含值=“x”的条目(键,值)并按顺序遍历所有条目?
答案 0 :(得分:8)
首先是HashMap
制作的内容......
(不确定“按顺序浏览所有条目”是什么意思。每个键只有1个条目。)
编辑:
现在您编辑了问题,答案是否! :(
如果您需要该功能,请设计您自己的双向HashMap
,将每个值的位置存储在另一个值中(希望这是有意义的),然后使用该类。 HashMap
不适用于此。
答案 1 :(得分:4)
有containsValue()
方法,但对于常见的实现,这只是在内部迭代所有值并将它们与参数进行比较。
答案 2 :(得分:1)
常见的模式是使用
if(hashMap.containsKey(key)) {
Object o = hashMap.get(key);
}
但是,如果您知道这些值都不是null
(许多Map集合不允许为null),那么您可以执行以下更有效的操作。
Object o = hashMap.get(key);
if (o != null) {
}
BTW:containsKey与
相同Set<Key> keys = hashMap.keySet();
boolean containsKey = keys.contains(key);
答案 3 :(得分:0)
使用HashMap.containsKey()来知道它是否包含给定的密钥。 使用HashMap.keySet()或HashMap.entrySet()来检索条目或值的集合,并按顺序迭代它。
答案 4 :(得分:0)
您可以找到您要查找的信息,但效率低下:
Object key;
Object val;
HashMap hm = new HashMap();
for (Iterator iter = hm.entrySet().iterator(); iter.hasNext();) {
Map.Entry e = (Map.Entry) iter.next();
if (key.equals(e.getKey()) && val.equals(e.getValue())) {
// do something
}
}
正如其他一些答案中所建议的那样,您可能会考虑为您要解决的问题找到更好的数据结构。
答案 5 :(得分:0)
您可能想考虑使用双向地图,例如Google的Guava库中的地图:http://guava-libraries.googlecode.com/svn/trunk/javadoc/index.html?com/google/common/collect/BiMap.html