Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java HashMap에서 값으로 키 찾는 방법 – 예제 코드와 실행 결과


이 글에서는 값(value)을 이용해 Java HashMap에서 키(key)를 가져오는 방법을 살펴봅니다. Java HashMap은 Java의 Map 인터페이스를 해시 테이블 기반으로 구현한 자료구조로, 키와 값이 한 쌍을 이루어 저장되는 컬렉션입니다.

아래 예제를 통해 실제 동작 과정을 확인해 보겠습니다.

입력 예시

입력 HashMap: {Java=8, Scala=5, Python=15}
검색할 값: 8

출력 결과

값이 8인 항목의 키: Java

알고리즘

1단계 - 프로그램을 시작합니다.
2단계 - 필요한 변수를 선언합니다.
3단계 - 값을 정의합니다.
4단계 - 문자열과 정수로 구성된 HashMap을 생성하고 'put' 메서드로 요소를 초기화합니다.
5단계 - 검색할 값을 정의합니다.
6단계 - HashMap의 요소를 순회하며 앞서 정의한 값이 존재하는지 확인합니다.
7단계 - 해당 값을 찾으면 루프를 빠져나옵니다.
8단계 - 결과를 화면에 출력합니다.
9단계 - 프로그램을 종료합니다.

예제 1: main 메서드에서 처리하기

첫 번째 예제는 모든 연산을 하나의 'main' 메서드 안에서 함께 처리하는 방식입니다.

import java.util.HashMap;
import java.util.Map.Entry;
public class Demo {
   public static void main(String[] args) {
      System.out.println("필요한 패키지가 임포트되었습니다");
      HashMap<String, Integer> input_map = new HashMap<>();
      input_map.put("Scala", 5);
      input_map.put("Java", 8);
      input_map.put("Python", 15);
      System.out.println("정의된 HashMap: " + input_map);
      Integer key = 8;
      for(Entry<String, Integer> entry : input_map.entrySet()) {
         if(entry.getValue().equals(key)) {
            System.out.println("\n값이 " + key + "인 항목의 키: " + entry.getKey());
            break;
         }
      }
   }
}

실행 결과

필요한 패키지가 임포트되었습니다
정의된 HashMap: {Java=8, Scala=5, Python=15}

값이 8인 항목의 키: Java

예제 2: 객체 지향 방식으로 분리하기

두 번째 예제는 검색 로직을 별도의 메서드로 캡슐화하여 객체 지향 프로그래밍 스타일로 작성한 것입니다. 코드의 재사용성과 가독성이 더욱 향상됩니다.

import java.util.HashMap;
import java.util.Map.Entry;
public class Demo {
   static void findKey(HashMap<String, Integer> input_map, Integer key) {
      for(Entry<String, Integer> entry : input_map.entrySet()) {
         if(entry.getValue().equals(key)) {
            System.out.println("\n값이 " + key + "인 항목의 키: " + entry.getKey());
            break;
         }
      }
   }
   public static void main(String[] args) {
      System.out.println("필요한 패키지가 임포트되었습니다");
      HashMap<String, Integer> input_map = new HashMap<>();
      input_map.put("Scala", 5);
      input_map.put("Java", 8);
      input_map.put("Python", 15);
      System.out.println("정의된 HashMap: " + input_map);
      Integer key = 8;
      findKey(input_map, key);
   }
}

실행 결과

필요한 패키지가 임포트되었습니다
정의된 HashMap: {Java=8, Scala=5, Python=15}

값이 8인 항목의 키: Java

알아두면 좋은 점

  • equals() 사용 권장: Integer 객체를 비교할 때 '==' 연산자는 객체 참조를 비교하기 때문에 -128~127 범위를 벗어나는 값에서는 의도치 않은 결과가 나올 수 있습니다. 따라서 'equals()' 메서드를 사용하는 것이 안전합니다.
  • 중복 값 주의: HashMap에서는 서로 다른 키가 같은 값을 가질 수 있습니다. 위 코드는 조건을 만족하는 첫 번째 키만 반환한 뒤 루프를 종료합니다.
  • 순서 미보장: HashMap은 요소의 저장 순서를 보장하지 않으므로, 실행 환경에 따라 출력 순서가 달라질 수 있습니다.