본문 바로가기

Programming/JAVA

컬렉션 프레임워크(4) - Map 컬렉션 2 : HashMap[1/2]

JAVA logo image

 

 

 

 

HashMap은 Map의 인터페이스를 구현하는 대표적인 Map 컬렉션입니다. HashMap에서 키로 사용할 객체는, hashCode( )와 equals( ) 메서드를 오버라이드 하여 동등 객체가 되는 조건을 정해야 합니다. 쉽게 설명하자면, 키는 유니크 값이기 때문에 중복으로 존재할 수 없기 때문이죠. 키가 같다면 이는 동일한 Entry로 취급해야 하기 때문입니다. 

 

같은 객체로 판단하는 프로세스는 다음과 같습니다.

 

1. 우선, hashCode( )의 리턴 값이 같으면 equals( )의 리턴 값을 점검합니다.
  > 만일 hashCode( )의 리턴 값이 다르면 이는 즉시 다른 키로 인식합니다. 

2. equals( )의 리턴 값까지 true라면, 이는 같은 키로 판정을 완료합니다. 
  > 만일 false가 리턴되면 이는 다른 키로 인식합니다.

 

 

일반적으로 key 타입은 String을 많이 사용합니다. String은 문자열 자체가 같을 경우, 동등 객체로 취급될 수 있도록 hashCode( )와 equals( ) 메서드가 오버라이드 되어 있습니다. 

 

HashMap을 생성하기 위해서는, key의 타입과 value의 타입을 파라미터로 전달하고 기본 생성자를 호출하면 됩니다. 

Map<K, V> map = new HashMap<K, V>();

 

 

여기서 key, value의 값의 타입은 기본 타입을 사용할 수 없습니다(byte, short, int, float, double, boolean, char). 클래스 및 인터페이스 타입만 가능하다는 점을 주의하세요. 

 

예를 들어 key는 String 타입, value는 Integer 타입을 사용하는 경우는 다음과 같이 생성합니다. 

 

Map<String, Integer> map = new HashMap<String, Integer>();

 

 

 


 

 

이번 예제에서는 이름을 key로 사용하고 점수를 value로 사용하는 HashMap을 사용하는 예제를 작성해 보겠습니다. 

 

import java.util.*;

public class ExampleMain {
	public static void main(String[] args) {
		//Map 컬렉션의 생성
		Map<String, Integer> map = new HashMap<String, Integer>();
		
		//객체 저장(중복 key 사용)
		map.put("SWINGS", 90);
		map.put("DEAN", 50);
		map.put("BLACKNUT", 67);
		map.put("DEAN", 12);
		
		System.out.println("총 Entry 개수: " + map.size());
		
		
		//key로 객체의 value 찾아내기
		System.out.println("\tDEAN : " + map.get("DEAN"));
		System.out.println();
	}
}

/* 출력
총 Entry 개수: 3
	DEAN : 12
*/

 

 

HashMap의 예제는 다음 아티클에서 계속 이어서 살펴보겠습니다.