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

Java에서 HashMap을 순회(반복)하는 프로그램 작성법

이 글에서는 Java에서 HashMap을 반복(순회)하는 다양한 방법을 알아봅니다. Java HashMap은 Map 인터페이스를 해시 테이블 기반으로 구현한 자료구조로, 키(key)와 값(value)의 쌍으로 이루어진 컬렉션입니다.

HashMap을 순회하면 저장된 모든 키와 값을 손쉽게 조회할 수 있습니다. 아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.

예시 입출력

입력값:

입력 HashMap: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}

기대 출력값:

HashMap의 키: Java, JavaScript, Mysql, Python,
HashMap의 값: Enterprise, Frontend, Backend, ML/AI,

알고리즘

HashMap을 순회하는 절차는 다음과 같습니다.

Step 1 - 시작
Step 2 - 필요한 변수를 선언한다.
Step 3 - 값을 정의한다.
Step 4 - 문자열 타입의 HashMap을 생성하고 'put' 메서드로 요소를 초기화한다.
Step 5 - 콘솔에 HashMap을 출력한다.
Step 6 - 'keySet' 메서드를 사용해 HashMap의 각 키를 가져오며 반복한다.
Step 7 - 결과를 콘솔에 출력한다.
Step 8 - 종료

예제 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, String> input_map = new HashMap<>();
      input_map.put("Java", "Enterprise");
      input_map.put("Python", "ML/AI");
      input_map.put("JavaScript", "Frontend");
      input_map.put("Mysql", "Backend");
      System.out.println("정의된 HashMap: " + input_map);
      System.out.print("\nHashMap의 키: ");
      for(String key: input_map.keySet()) {
         System.out.print(key);
         System.out.print(", ");
      }
      System.out.print("\nHashMap의 값: ");
      for(String value: input_map.values()) {
         System.out.print(value);
         System.out.print(", ");
      }
   }
}

출력 결과

필요한 패키지가 임포트되었습니다
정의된 HashMap: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}

HashMap의 키: Java, JavaScript, Mysql, Python,
HashMap의 값: Enterprise, Frontend, Backend, ML/AI,

위 코드에서는 keySet() 메서드로 모든 키를 가져오고, values() 메서드로 모든 값을 가져와 향상된 for문(enhanced for loop)으로 하나씩 출력합니다.

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

두 번째 예제는 객체 지향 프로그래밍(OOP) 스타일에 맞게 연산을 별도의 함수로 캡슐화한 방식입니다. 코드의 재사용성과 가독성이 더욱 높아집니다.

import java.util.HashMap;
class Demo {
   static void print_keys(HashMap<String, String> input_map){
      System.out.print("\nHashMap의 키: ");
      for(String key: input_map.keySet()) {
         System.out.print(key);
         System.out.print(", ");
      }
   }
   static void print_values( HashMap<String, String> input_map){
      System.out.print("\nHashMap의 값: ");
      for(String value: input_map.values()) {
         System.out.print(value);
         System.out.print(", ");
      }
   }
   public static void main(String[] args) {
      System.out.println("필요한 패키지가 임포트되었습니다");
      HashMap<String, String> input_map = new HashMap<>();
      input_map.put("Java", "Enterprise");
      input_map.put("Python", "ML/AI");
      input_map.put("JavaScript", "Frontend");
      input_map.put("Mysql", "Backend");
      System.out.println("정의된 HashMap: " + input_map);
      print_keys(input_map);
      print_values(input_map);
   }
}

출력 결과

필요한 패키지가 임포트되었습니다
정의된 HashMap: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}

HashMap의 키: Java, JavaScript, Mysql, Python,
HashMap의 값: Enterprise, Frontend, Backend, ML/AI,

마무리

이처럼 Java에서는 keySet(), values(), 그리고 entrySet() 등의 메서드를 활용해 HashMap을 간편하게 반복할 수 있습니다. 간단한 스크립트라면 예제 1처럼 main 함수에서 바로 처리해도 좋고, 규모가 있는 프로젝트라면 예제 2처럼 기능별로 메서드를 분리해 유지보수성을 높이는 것이 좋습니다.