關於我對java中集合的總結有以下三篇:html
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 }