개발/JAVA

[JAVA]컬렉션 HashMap(해쉬맵)의 사용

윤_ve 2021. 3. 9. 23:37

HashMap은 컬렉션프레임워크의 주요 인터페이슨 Map에서 가장 대표적으로 많이 사용 되는 Map컬렉션 입니다.

Map의 성질을 그대로 받은 인터페이스를 가지고 있습니다.

 

여기서 Map은 Key와 Value값을 받은 Entry객체로 구성되어 있습니다.

Key, Value를 받는데 여기서 가장 중요한 점은 Key는 중복된 값을 받을 수 없습니다.

중복된 값이 들어오면 자동으로 배척하게 됩니다.

 

앞에 포스팅한 List에 관해 먼저 알고 오면 더 쉽습니다.

List컬렉션 프레임워크 ↓↓↓

2021.03.08 - [개발/JAVA] - [JAVA] 자바 컬렉션 프레임워크(collection framework) - List

 

[JAVA] 자바 컬렉션 프레임워크(collection framework) - List

오늘은 컬렉션 프레임워크에서 List 컬렉션 클래스에 대해 이야기 해보겠다. 자바에서 컬렉션 프레임워크는 다수의 데이터를 효과적으로 처리할 수 있는 표준화된 클래스의 집합을 의미한다. 데

yoon-ve.tistory.com

HashMap은 List와 다르게 Key와 Value두가지를 받아서 인덱스 한켠에 저장 하기 때문에 더 방대한 데이터를 다룰 수 있다.

 


HashMap생성

 

해쉬맵의 생성은 간단합니다.

Map<Key, Value> 레퍼런스 변수 = new HashMap<Key, Value>();

이렇게 만들어 주면 되는데, key와 value에 타입을 설정 해주면된다. 

배열도 넣을 수 있는데 나중에 또 배열을 넣은 HashMap을 따로 써보겠다.

 

put() 메서드를 통해 원하는 값을 집어 넣을 수 있다.

 

 

 

 

size()를 통해 갯수를 가져올 수도 있고, get()메서드로 Key값을 넣으면 Value를 출력해준다.

 

이렇게 출력된다.

 

다음은 조금 어려울 수 있는 set객체로 받아오기를 해보겠다.

 

 

 

Set객체로 map을 받아 올 수도 있다.

 

Set은 List, Map과 함께 중요한 컬렉션 프레임 워크이다.

(Set은 다른 글에도 언급했지만 중복을 허용하지않는다.)

 

그리고 Iterator를 사용해서 값을 가져올 수 있는데,

여기서 Iterator에 대해 간단하게 설명하자면, 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인패턴의 하나로도 사용된다.

내부 구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위패턴에 속한다.

 

Iterator는 컬렉션 프레임워크의 핵심 메서드이다. 

 

keyIterator라는 메서드를 만들어서 map의 keySet을 통해 Set에 받아온 Map의 데이터드을 출력해준다.

 

while반복문 안에 넣어서 값이 있을 때 까지는 계속 해서 반복되게 한다음

key라는 String 변수에 key값을 받고 Value라는 Integer변수에 key를 호출해 해당 value를 출력하게 한다.

 

이를 실행 하면,

HashMap안에 들어있는 모든 Key와 그에 해당하는 Value값을 얻을 수 있다.

 

다른 것과 마찬가지로 remove()메서드를 통해 직접 값을 Key를 넣어 해당 데이터를 제거할 수도 있다.

 

이번에는 위의 keySet과 다르게 entrySet을 통해 key, value 값을 모두 꺼내올 수있다.

entrySet을 통해 꺼내온 값을 key와 value에 각각 get메서드로 집어 넣으면 위와 똑같은 값을 얻을 수 있다.

 

이렇게 되면 위에 삭제한 임영웅을 제외한 나머지 2개의 데이터가 출력된다.

 

이렇게 간단하게 사용하는 방법을 알아보았다.

앞의 포스팅에 객체배열로 전화번호를 출력하는걸 만들었었는데 이를 HashMap으로 간단하게 구현할 수 있다. 다음은 HashMap을 통한 전화번호 출력 프로그램을 만들어 보겠다.