본문 바로가기
JAVA/Java Study

[Java] HashMap : value로 key 찾기

by ♡˖GYURI˖♡ 2024. 1. 28.

keySet() 메서드와 for문 사용 (1:1)

keySet() 메서드와 for문을 사용하는 방법은 모든 키를 가져와서 반복문을 실행한다.

키에 매핑된 값과 특정 값이 일치하면 키를 반환한다.

이 방법은 키와 값이 1:1 관계인 경우에만 사용할 수 있다.

public static void main(String[] args) {
  String findKey = "";

  Map<String, Integer> map = new HashMap<>();
  map.put("John", 34);
  map.put("Jane", 26);
  map.put("Billy", null);

  // 모든 키를 순회합니다.
  for(String key : map.keySet()) {
    // 키와 매핑된 값이랑 equals() 메서드에 전달된 값이랑 일치하면 반복문을 종료합니다.
    if(map.get(key).equals(34)) { // 키가 null이면 NullPointerException 예외 발생
      findKey = key;
      break;
    }
  }
}

 

 

entrySet() 메서드와 for문 (1:1)

entrySet() 메서드와 for문을 사용하는 방법은 위와 유사하다. 값도 가져올 수 있다는 차이점이 있으며, for문 대신 Iterator 객체를 사용할 수 있다.

public static void main(String[] args) {
  String findKey = "";

  Map<String, Integer> map = new HashMap<>();
  map.put("John", 34);
  map.put("Jane", 26);
  map.put("Billy", null);

  for(Map.Entry<String, Integer> entry : map.entrySet()){
    // 동일한 값이 있으면 반복문을 종료합니다.
    if(entry.getValue().equals(34)) { // 값이 null이면 NullPointerException 예외 발생
      findKey = entry.getKey();
      break;
    }
  }
}

 

 

value를 사용하여 key를 찾는 방법 (1:N)

위에서 설명한 방법들은 키와 값이 1:1 관계인 HashMap에서 동작한다. 그러나 HashMap에서 키는 고유하지만 값은 중복될 수 있다. 이러한 경우 List를 사용하여 특정 값을 만족하는 키를 List에 추가한다.

public static void main(String[] args) {
  List<String> keyList = new ArrayList<String>();

  Map<String, Integer> map = new HashMap<>();
  map.put("John", 34);
  map.put("Jane", 26);
  map.put("Billy", null);

  for(Map.Entry<String, Integer> entry : map.entrySet()){
    if(entry.getValue().equals(26) ){
      keyList.add(entry.getKey());
    }
  }
}

 

 

 

 

 

참고

 

[Java]HashMap value로 key 찾기

이번 포스팅은 HashMap에서 value로 key를 찾는 다양한 방법들을 소개합니다. value을 사용하여 key를 찾는 방법(1:1) HashMap 클래스는 키(key)-값(Value) 쌍을 저장할 수 있는 Java의 컬렉션입니다. 키를 사용

developer-talk.tistory.com