值可能重复:
Java Hashmap: How to get key from value?拿到钥匙的时候,我们知道在HashMap中
我知道一个HashMap包含特定整数变量值。我如何获得与此值关联的密钥?
值可能重复:
Java Hashmap: How to get key from value?拿到钥匙的时候,我们知道在HashMap中
我知道一个HashMap包含特定整数变量值。我如何获得与此值关联的密钥?
此代码将做到这一点:
public List<Object> getKeysFromValue(Map<?, ?> hm, Object value){
List <Object>list = new ArrayList<Object>();
for(Object o:hm.keySet()){
if(hm.get(o).equals(value)) {
list.add(o);
}
}
return list;
}
如果您知道密钥,则HashMap可帮助您找到值。如果你真的想从这个值中获得密钥,你将不得不遍历所有的项目,比较这些值,然后得到密钥。
在这里你去:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test
{
public static void main(String args[])
{
Map < Integer , Integer > map = new HashMap < Integer , Integer >();
map.put(1 , 2);
map.put(3 , 4);
map.put(5 , 6);
map.put(7 , 4);
List<Integer> keys = new ArrayList<Integer>();
Integer value = 4;
for (Integer key : map.keySet())
{
if (map.get(key).equals(value))
{
keys.add(key);
}
}
System.out.println(value + " has been found in the following keys: " + keys);
}
}
输出是:
4 has been found in the following keys: [7, 3]
Set<Map.Entry> entries = hashMap.entrySet();
for(Map.Entry entry : entries) {
if(entry.getValue().equals(givenValue)) {
return entry.getKey();
}
}
环比的entrySet是更快,因为您不会为每个键两次查询地图。
public Set<Object> getKeysFromValue(Map<Object, Integer> map, int value) {
Set<Object> keys = new HashSet<Object>();
for (Map.Entry<Object, Integer> entry:map.entrySet()) {
//if value != null
if (entry.getValue() == value) {
keys.add(entry.getKey());
}
}
return keys;
试试这个....简短而亲切的方式...
HashMap<String, Integer> list = new HashMap<String,Integer>();
for (Map.Entry<String, Integer> arr : list.entrySet()){
System.out.println(arr.getKey()+" "+arr.getValue());
}
http://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-关键的价值 – squiguy 2012-07-19 17:21:43