关于java:当我们知道HashMap中的值时获取密钥

Getting the key when we know the value in HashMap

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Java Hashmap: How to get key from value?

我知道HashMap包含一个特定的整数变量作为值。 如何获得与此值相关联的密钥?


这段代码会这样做:

1
2
3
4
5
6
7
8
9
  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;
  }

1
2
3
4
5
6
Set<Map.Entry> entries = hashMap.entrySet();
for(Map.Entry entry : entries) {
   if(entry.getValue().equals(givenValue)) {
       return entry.getKey();
   }
}


干得好:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 );
    }
}

输出是:

1
4 has been found in the following keys: [7, 3]

如果您知道密钥,Hashmaps可帮助您找到值。 如果您真的想要从值中获取密钥,则必须遍历所有项目,比较值,然后获取密钥。


试试这个....短而甜蜜的方式......

1
2
3
4
5
6
7
HashMap<String, Integer> list = new HashMap<String,Integer>();

        for (Map.Entry<String, Integer> arr : list.entrySet()){


                System.out.println(arr.getKey()+""+arr.getValue());
        }

在entrySet上循环更快,因为您不会为每个键查询两次映射。

1
2
3
4
5
6
7
8
9
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;