根据value取得map中对应的key

hashmap中key值是唯一的,但value是不唯一的,所以是没有办法通过像get(key)取value值一样,直接取key的 值。

所以当map中没有重复值时,根据value取得key是唯一的,但是要自己写一个方法来读取。

当有重复值时,取得第一个匹配的值,由于是HashMap,顺序不可预测,不推荐使用以下方法。


例子1:

[java]  view plain copy
  1. private static HashMap<String, String> processMap =new HashMap<String, String>();  

[java]  view plain copy
  1. public static String getProcessCdByName(String name){  
  2.         String result = null;  
  3.         Set<Map.Entry<String, String>> set = processMap.entrySet();  
  4.         for(Map.Entry<String, String> entry : set){  
  5.             if(entry.getValue().equals(name)){  
  6.                 result = entry.getKey();  
  7.                 break;  
  8.             }  
  9.         }  
  10.           
  11.         return result;  
  12.     }  
例子2:


  1. /*请问:如何能通过hashmap的某一value来返回其对应的键值key啊?(新手入门困惑) */  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7. import java.util.Map.Entry;  
  8.   
  9. public class Value2Key {  
  10.   
  11.     //待反查的Map数据成员  
  12.     private Map<Object,Object> map=new HashMap<Object,Object>();  
  13.     //构造方法  
  14.     public Value2Key(Map<Object,Object> map){  
  15.         this.map=map;  
  16.     }  
  17.     //反查  
  18.     public List<Object> getKeys(Object value){  
  19.         ArrayList<Object> keys=new ArrayList<Object>();  
  20.         for(Entry<Object,Object> entry:this.map.entrySet()){  
  21.             if(value.equals(entry.getValue())){  
  22.                 keys.add(entry.getKey());  
  23.             }else{  
  24.                 continue;  
  25.             }  
  26.         }  
  27.         return keys;  
  28.     }  
  29.     //测试代码  
  30.     public static void main(String[] args) {  
  31.         HashMap<Object, Object> map = new HashMap<Object, Object>();     
  32.         map.put(1"a");     
  33.         map.put(2"d");     
  34.         map.put(3"a");     
  35.         map.put(4"b");     
  36.         map.put(5"a");  
  37.         //构造反查器实例  
  38.         Value2Key searcher=new Value2Key(map);  
  39.         for(Object obj:searcher.getKeys("a")){  
  40.             System.out.println(obj);  
  41.         }  
  42.     }  
  43. }  

控制台结果: 




  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值