1. 程式人生 > >HashMap根據value獲取key

HashMap根據value獲取key

根據Map的定義,我們可以知道Map是一組鍵值對,且key是唯一的,對應的value有且只有一個,但是相同的value可能對應不同的key。如果我們想通過key獲取value,可以map.get(key)獲得value。而如果需要通過value獲取對應的key,則需要自己實現對應的方法。
下面,提供兩種方法實現此需求。
方法1:

public static Object getKey(Map map, Object value){
    List<Object> keyList = new ArrayList<>();
    for(Object key: map.keySet()){
        if
(map.get(key).equals(value)){ keyList.add(key); } } return keyList; }

方法2,通過引入entrySet和Iterator:

public static Object getKey(Map map, Object value){
    Set set = map.entrySet(); //通過entrySet()方法把map中的每個鍵值對變成對應成Set集合中的一個物件
    Iterator<Map.Entry<Object, Object>> iterator = set
.iterator(); ArrayList<Object> arrayList = new ArrayList(); while(iterator.hasNext()){ //Map.Entry是一種型別,指向map中的一個鍵值對組成的物件 Map.Entry<Object, Object> entry = iterator.next(); if(entry.getValue().equals(value)){ arrayList.add(entry.getKey()); } } return
arrayList; }

測試程式碼如下:

public static void main(String[] args){
    Map<String, String> map = new HashMap<>();
    map.put("1", "a");
    map.put("2", "b");
    map.put("3", "a");
    map.put("4", "c");

    System.out.println("輸出的key為:" + getKey(map, "a"));
}

結果輸出:
方法1輸出為:輸出的key為:[1, 3]
方法2輸出為:輸出的key為:[1, 3]