当我们知道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给了我列表的最后一个值[重复]