当我们知道HashMap中的值时获取密钥[重复]

Posted

技术标签:

【中文标题】当我们知道HashMap中的值时获取密钥[重复]【英文标题】:Getting the key when we know the value in HashMap [duplicate] 【发布时间】:2012-07-18 22:40:07 【问题描述】:

可能重复:Java Hashmap: How to get key from value?

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

【问题讨论】:

***.com/questions/1383797/… 【参考方案1】:

如果您知道键,哈希图可以帮助您找到值。如果您真的想从值中获取键,则必须遍历所有项,比较值,然后获取键。

【讨论】:

【参考方案2】:

此代码将执行此操作:

  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;
  

【讨论】:

【参考方案3】:

给你:

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]

【讨论】:

【参考方案4】:
Set<Map.Entry> entries = hashMap.entrySet();
for(Map.Entry entry : entries) 
   if(entry.getValue().equals(givenValue)) 
       return entry.getKey();
   

【讨论】:

【参考方案5】:

遍历 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;

【讨论】:

【参考方案6】:

试试这个....简短而甜蜜的方法...

HashMap<String, Integer> list = new HashMap<String,Integer>();

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


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

【讨论】:

以上是关于当我们知道HashMap中的值时获取密钥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取哈希中唯一条目的值[重复]

仅当它是数组中的值时才可以打印数字吗? (Java)[重复]

当我要求它给出-1的值时,Python给了我列表的最后一个值[重复]

golang 从 map 获取值时的值拷贝问题

当我们在 plsql 中动态传递列名的值和相应的列值时获取整行的存储过程

如何在 Java 中迭代 HashMap 值时替换它们