1. 程式人生 > >根據value取得map中對應的key

根據value取得map中對應的key

hashmap中key值是唯一的,但value是不唯一的,所以是沒有辦法通過像get(key)取value值一樣,直接取key的 值。

所以當map中沒有重複值時,根據value取得key是唯一的,但是要自己寫一個方法來讀取。

當有重複值時,取得第一個匹配的值,由於是HashMap,順序不可預測,不推薦使用以下方法。


例子1:

  1. privatestatic HashMap<String, String> processMap =new HashMap<String, String>();  

  1. publicstatic 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.         return result;  
  11.     }  
例子2:
  1. /*請問:如何能通過hashmap的某一value來返回其對應的鍵值key啊?(新手入門困惑) */  
  2. import java.util.ArrayList;  
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6. import java.util.Map.Entry;  
  7. public class Value2Key {  
  8.     //待反查的Map資料成員  
  9.     private
     Map<Object,Object> map=new HashMap<Object,Object>();  
  10.     //構造方法  
  11.     public Value2Key(Map<Object,Object> map){  
  12.         this.map=map;  
  13.     }  
  14.     //反查  
  15.     public List<Object> getKeys(Object value){  
  16.         ArrayList<Object> keys=new ArrayList<Object>();  
  17.         for(Entry<Object,Object> entry:this.map.entrySet()){  
  18.             if(value.equals(entry.getValue())){  
  19.                 keys.add(entry.getKey());  
  20.             }else{  
  21.                 continue;  
  22.             }  
  23.         }  
  24.         return keys;  
  25.     }  
  26.     //測試程式碼  
  27.     public static void main(String[] args) {  
  28.         HashMap<Object, Object> map = new HashMap<Object, Object>();     
  29.         map.put(1"a");     
  30.         map.put(2"d");     
  31.         map.put(3"a");     
  32.         map.put(4"b");     
  33.         map.put(5"a");  
  34.         //構造反查器例項  
  35.         Value2Key searcher=new Value2Key(map);  
  36.         for(Object obj:searcher.getKeys("a")){  
  37.             System.out.println(obj);  
  38.         }  
  39.     }  
  40. }  

控制檯結果: