關於HashMap根據Value獲取Key

關於我對java中集合的總結有以下三篇:html

關於JDK中的集合總結(一)

關於JDK中的集合總結(二)

關於JDK中的集合總結(三)

關於數組集合之間的轉換

Map中是一個key有且只有一個value.java

可是一個value能夠對應多個key值.數組

通常都是經過key,而後map.get(key)得到到value.post

若是想要反向想經過value得到key的值,提供一下兩種方法:this

方法一:url

 1 package cn.itcast.mapgetkey;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 
 7 public class HashMapDemo {
 8     //根據value值獲取到對應的一個key值
 9     public static String getKey(HashMap<String,String> map,String value){
10         String key = null;
11         //Map,HashMap並無實現Iteratable接口.不能用於加強for循環.
12         for(String getKey: map.keySet()){
13             if(map.get(getKey).equals(value)){
14                 key = getKey;
15             }
16         }
17         return key;
18         //這個key確定是最後一個知足該條件的key.
19     }
20     
21     //根據value值獲取到對應的全部的key值
22     public static List<String> getKeyList(HashMap<String,String> map,String value){
23         List<String> keyList = new ArrayList();
24         for(String getKey: map.keySet()){
25             if(map.get(getKey).equals(value)){
26                 keyList.add(getKey);
27             }
28         }
29         return keyList;
30     }
31     
32     public static void main(String[] args) {
33         HashMap<String,String> map = new HashMap();
34         map.put("CHINA", "中國");
35         map.put("CN", "中國");
36         map.put("AM", "美國");
37         //獲取一個Key
38         System.out.println("經過value獲取Key:"+getKey(map,"中國"));//輸出"CN"
39         System.out.println("經過value獲取Key:"+getKey(map,"美國"));//輸出"AM"
40         //得到全部的key值
41         System.out.println("經過value獲取全部的key值:"+getKeyList(map,"中國"));//輸出"[CHINA, CN]"
42         
43     }
44 }

  方法二:spa

 1 package cn.itcast.mapgetkey2;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.Iterator;
 6 import java.util.Map;
 7 import java.util.Map.Entry;
 8 import java.util.Set;
 9 
10 public class MapValueGetKey {
11     HashMap<String, String> map = null;
12 
13     public MapValueGetKey(HashMap<String, String> map) {
14         this.map = map;
15     }
16 
17     public static void main(String[] args) {
18         HashMap<String, String> map = new HashMap<String, String>();
19         map.put("1", "a");
20         map.put("2", "b");
21         map.put("3", "c");
22         map.put("4", "c");
23         map.put("5", "e");
24         MapValueGetKey mapValueGetKey = new MapValueGetKey(map);
25         System.out.println(mapValueGetKey.getKey("c"));//輸出[3, 4]
26     }
27 
28     private ArrayList<String> getKey(String value) {
29         ArrayList<String> keyList = new ArrayList<String>();
30         String key = null;
31         Set<Entry<String, String>> set = map.entrySet();// entrySet()方法就是把map中的每一個鍵值對變成對應成Set集合中的一個對象.
32         // set對象中的內容以下:[3=c, 2=b, 1=a, 5=e, 4=c]
33         Iterator it = set.iterator();
34         while (it.hasNext()) {
35             Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
36             // entry中的內容就是set集合中的每一個對象(map集合中的一個鍵值對)3=c....
37             // Map.Entry就是一種類型,專值map中的一個鍵值對組成的對象.
38             if (entry.getValue().equals(value)){
39                 key = (String) entry.getKey();
40                 keyList.add(key);
41             }
42         }
43         return keyList;
44     }
45 }
相關文章
相關標籤/搜索