자바(Java)/JAVA 2SE

java.util.HashMap - Hash 객체

본클라쓰 2009. 10. 30. 10:06

 

HashMap을 구현한 클래스의 선언부는 다음과 같다.

 

public class HashMap extends AbstractMap implement Map, Cloneable, Serializable

 

 HashMap은 Map 인터페이스의 해시 테이블에 근거한 구현이다.  HashMap 클래스는 키와 값의 한 쌍으로 이루어진 클래스로 키를 값에 매핑하는 객체이다. 키에는 동일한 키를 복수로 등록할 수 없다. 또한 각 키에는 1개의 값만 매핑할 수 있다. 맵에 관련한 옵션의 연산자를 모두 지원하며 Null 값 및 Null 키를 사용할 수 있다. 또한, HashMap 클래스는 동기화되어 있지 않는다. HashTable 객체가 어플리케이션에서 적합한 거와 달리 HashMap 객체는 다중 사용자 환경에 적합한 클래스이다.

 

 즉, 복수의 Thread가 동시에 이 맵에 액세스 할 수 있다. 따라서 한 개의 HashMap에 Thread가 한 개 이상의 맵을 변경할 경우에는 동기화시켜 사용해야 한다. 동기화시켜 사용하는 방법은 아래와 같다.

 

Map map = Collections.synchronizedMap( new HashMap() );

 

 

HashMap 생성자

HashMap() : 디폴트로 용량과 부하 계수가 (0.75)로 새로운 맵을 생성

 

 

HashMap 메소드)

void clear() : 모든 매핑을 맵으로부터 삭제

boolean containsKey(Object key)  : 맵이 키를 보유하고 있을 경우 true를 반환

boolean containsValue(Object value) : 맵이 값을 보유하고 있을 경우 true를 반환

Object get(Object key) : 맵에 지정된 키의 값을 반환

Object put(Object key, Object value) : 지정된 값과 키를 매핑시킨다.

Object remove(Object key) : 키에 대한 매핑이 있으면, 그 키를 맵으로부터 삭제

Set keySet() : 맵에 있는 키 셋트를 반환

Collection values() : 값의 콜렉션을 반환

int size() : 맵 내의 키와 값의 매핑 수를 반환

 

 

사용예제)

HashMap<String, Integer> hashMap = new HaskMap<String, Integer>();

hashMap.put("person", 111);

hashMap.put("animal", 222);

 

Set<String> set = hashMap.keySet();

Object[] arr = set.toArray();

 

for ( int i = 0 ; i < arr.length ; i++ ) {

    String name = arr[i];

    int age = hashMap.get( arr[i] );

 

    System.out.println( name + "/" + value );

}

 

 HashMap은 키 값에 해당하는 값을 객체 타입으로 반환한다. 따라서 정수형을 값에 지정했다면 위와 같은 방법으로 정수형으로 변환을 시켜줘야 정수형 값을 사용할 수 있다.