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

자바 HashMap 클래스 완벽 가이드: 생성부터 주요 메서드 활용까지

프로그래밍에서 데이터 타입은 특정 유형의 데이터를 분류하는 데 사용됩니다. 각 데이터 타입은 서로 다른 방식으로 저장되며, 값이 저장되는 데이터 타입에 따라 해당 값에 수행할 수 있는 연산이 결정됩니다.

자바(Java)로 개발할 때 자주 접하게 되는 클래스 중 하나가 바로 Java HashMap 클래스입니다. 이 클래스는 컬렉션 프레임워크의 일부로, 개발자가 Map 데이터 타입을 사용해 데이터를 저장할 수 있게 해줍니다.

이 글에서는 자바 HashMap의 기본 개념, HashMap을 생성하는 방법, 그리고 HashMap 클래스를 다룰 때 사용할 수 있는 주요 메서드들을 살펴보겠습니다. 다양한 예제를 통해 HashMap 클래스를 더 깊이 있게 이해할 수 있도록 설명하겠습니다.

자바 Map과 HashMap

자바의 Map 인터페이스는 데이터를 키/값(key/value) 쌍의 형태로 저장하는 데 사용됩니다. 키는 특정 값과 연결된 고유한 값으로, 자바에서 Map은 중복된 키를 가질 수 없으며 각 키는 반드시 하나의 값과 연결되어야 합니다.

Map이 제공하는 키/값 구조를 사용하면 키를 기반으로 값에 접근할 수 있습니다. 예를 들어, 키가 gbp이고 값이 United Kingdom인 Map이 있다면, 키 gbp를 참조할 때 "United Kingdom"이라는 값이 반환됩니다.

HashMap 클래스는 컬렉션 프레임워크의 일부로, Map 인터페이스와 해시 테이블(hash table)을 사용해 데이터를 저장할 수 있게 해줍니다. 해시 테이블은 키/값 항목을 저장하기 위해 사용되는 특수한 컬렉션입니다.

HashMap을 생성하기 전에 먼저 HashMap 패키지를 임포트해야 합니다. 자바 프로그램에서는 다음과 같이 임포트할 수 있습니다:

import java.util.HashMap;

HashMap 생성하기

자바에서 HashMap을 생성하려면 다음과 같은 문법을 사용합니다:

HashMap<KeyType, ValueType> map_name = new HashMap<KeyType, ValueType>(capacity, loadFactor);

이 문법을 구성 요소별로 살펴보겠습니다:

  • HashMap: 해시맵을 선언한다는 것을 코드에 알려줍니다.
  • <KeyType, ValueType>: 키와 값의 데이터 타입을 각각 지정합니다.
  • map_name: 선언하는 해시맵의 이름입니다.
  • new HashMap<KeyType, ValueType>: 지정한 데이터 타입으로 HashMap을 초기화하도록 코드에 지시합니다.
  • capacity: 저장할 수 있는 항목의 수를 지정합니다. 기본값은 16입니다. (선택 사항)
  • loadFactor: 해시 테이블이 특정 용량에 도달하면 원래 크기의 두 배에 해당하는 새 해시 테이블을 생성하도록 지정합니다. 기본값은 0.75(즉, 75% 용량)입니다. (선택 사항)

예를 들어, 지역 환전 업체를 위한 프로그램을 만든다고 가정해 보겠습니다. 이 업체는 환전 서비스를 제공하는 국가 이름과 통화 코드를 저장하는 프로그램을 원합니다. 국가 이름과 통화 코드라는 두 가지 항목을 함께 저장해야 하므로, HashMap을 사용하는 것이 좋은 선택입니다.

이 목적을 위한 HashMap을 생성하는 코드는 다음과 같습니다:

import java.util.HashMap;
HashMap<String, String> currencyCodes = new HashMap<String, String>();

이 예제에서는 두 개의 String 값을 저장하는 currencyCodes라는 이름의 HashMap을 선언했습니다. 이제 HashMap이 준비되었으니 항목을 추가하고 내용을 조작할 수 있습니다.

항목 추가하기

HashMap 클래스는 데이터를 저장하고 조작할 수 있는 다양한 메서드를 제공합니다. put() 메서드는 키/값 구조를 사용해 HashMap에 값을 추가할 때 사용됩니다.

다시 환전 예제로 돌아가 보겠습니다. 영국의 통화 정보를 저장하기 위해 프로그램에 GBP/United Kingdom 항목을 추가한다고 가정해 보겠습니다. 이 예제에서 GBP 키는 United Kingdom 값에 매핑됩니다. 다음 코드를 사용하면 됩니다:

import java.util.HashMap;

class CurrencyExchange {
	public static void main(String[] args) {
		HashMap<String, String> currencyCodes = new HashMap<String, String>();

		currencyCodes.put("GBP", "United Kingdom");
		currencyCodes.put("USD", "United States");
		System.out.println(currencyCodes);
	}
}

위 코드에서는 currencyCodes라는 해시맵을 초기화한 다음, put() 메서드를 사용해 해시맵에 항목을 추가합니다. 이 항목은 키 GBP와 값 United Kingdom으로 구성됩니다. 그런 다음 HashMap의 값을 출력하면 다음과 같은 결과가 반환됩니다:

{GBP=United Kingdom, USD=United States}

보시다시피 HashMap에는 이제 GBP=United Kingdom과 USD=United States라는 두 개의 값이 포함되어 있습니다.

항목 접근하기

HashMap의 항목에 접근하려면 get() 메서드를 사용할 수 있습니다. get 메서드는 하나의 매개변수, 즉 검색하려는 값의 키 이름을 받습니다.

GBP와 연결된 국가 이름을 검색한다고 가정해 보겠습니다. 다음 코드를 사용하면 됩니다:

…
		String gbp = currencyCodes.get("GBP");
		System.out.println(gbp);
…

코드는 다음을 반환합니다: United Kingdom.

항목 삭제하기

remove() 메서드는 HashMap에서 항목을 삭제할 때 사용됩니다. remove()는 하나의 매개변수, 즉 삭제하려는 항목의 키 이름을 받습니다.

HashMap에서 GBP를 삭제한다고 가정해 보겠습니다. 다음 코드를 사용하면 됩니다:

…
currencyCodes.remove("GBP");
System.out.println(currencyCodes);
…

코드를 실행하면 HashMap에서 GBP가 삭제되고 다음과 같은 결과가 반환됩니다: {USD=United States}

또한 clear() 메서드는 HashMap의 모든 항목을 삭제할 때 사용됩니다. clear()는 매개변수를 받지 않습니다. 다음은 clear() 메서드의 사용 예입니다:

…
currencyCodes.clear();
System.out.println(currencyCodes);
…

코드는 빈 HashMap인 {}를 반환합니다.

HashMap 요소 교체하기

replace() 메서드는 특정 키와 연결된 값을 새 값으로 교체할 때 사용됩니다. replace()는 두 개의 매개변수, 즉 교체하려는 값의 키와 기존 값을 대체할 새 값을 받습니다.

예를 들어, HashMap에서 United Kingdom 값을 Great Britain으로 교체하고 싶다면 다음 코드를 사용하면 됩니다:

…
		currencyCodes.replace("GBP", "Great Britain");
		System.out.println(currencyCodes);
…

코드를 실행하면 키 GBP의 값(이 경우 United Kingdom)이 Great Britain으로 교체되고 프로그램은 다음을 반환합니다:

{GBP=Great Britain, USD=United States}

HashMap 순회하기

또한 자바에서는 HashMap을 순회(iterate)할 수 있습니다. HashMap은 순회에 사용할 수 있는 세 가지 메서드를 제공합니다:

  • keySet(): HashMap의 키를 순회할 때 사용됩니다.
  • values(): HashMap의 값을 순회할 때 사용됩니다.
  • entrySet(): HashMap의 키와 값을 모두 순회할 때 사용됩니다.

HashMap을 순회하는 가장 쉬운 방법은 for-each 루프를 사용하는 것입니다.

currencyCodes HashMap의 모든 값을 콘솔에 출력하여 환전 업체에 HashMap에 저장된 제공 통화 목록을 보여준다고 가정해 보겠습니다. 다음 코드를 사용할 수 있습니다:

import java.util.HashMap;

class CurrencyExchange {
	public static void main(String[] args) {
		HashMap<String, String> currencyCodes = new HashMap<String, String>();

		currencyCodes.put("GBP", "Great Britain");
		currencyCodes.put("USD", "United States");

		for(String value : currencyCodes.values()) {
			System.out.println(value);
		}
	}
}

코드를 실행하면 다음과 같은 결과가 반환됩니다:

Great Britain
United States

위 코드에서는 for-each 루프를 사용해 currencyCodes.values() 목록의 모든 항목을 순회한 다음, 각 항목을 새 줄에 출력합니다.

모든 키를 순회하면서 HashMap의 각 키 이름을 출력하고 싶다면, 위 코드에서 values()keySet()으로 바꾸면 됩니다. 이 경우 프로그램은 다음을 반환합니다:

GBP
USD

마무리

자바 HashMap 클래스는 키/값 컬렉션 구조를 사용해 데이터를 저장하는 데 사용됩니다. 이 구조는 서로 연관되어야 하는 두 값을 함께 저장하고 싶을 때 특히 유용합니다.

이 글에서는 HashMap의 기본 개념을 다루었습니다. HashMap을 생성하는 방법을 살펴보고, 일반적으로 사용되는 HashMap 메서드의 실제 활용 예제도 함께 확인했습니다. 이제 여러분도 전문가처럼 자바 HashMap을 다룰 수 있는 지식을 갖추게 되었습니다!