╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

Java/Java 기초

[Java] 컬렉션 프레임워크 Map (HashMap)

재안안 2022. 4. 30. 22:09

컬렉션 프레임워크(collection framework)란 다수의 데이터들을 쉽게 다루기위해 만들어진 클래스들의 집합체이다.

 

컬렉션 프레임워크에서 제공하는 클래스들은 수많은 사람들을 통해 표준화되었고 이로인해 각 상황에 맞춰서 편하게 사용만 하면 된다.

 

컬렉션 프레임워크에서 제공되는 클래스들은 인터페이스의 형태로 만들어져 있다.

사용시 클래스로 구현해야 한다.

 

자바 컬렉션 프레임워크는 크게 세단위로 나눌 수 있다.

 

  • List<E>
  • Set<E>
  • Map<K,V>

 

이번엔 Map<K,V>에 대해서 알아보겠다.

 

Map은 파이썬의 Dictionary이라고 생각해도 무방하다.

 

Map의 특징으로는,

 

  • 데이터 저장의 순서가 없고
  • 저장하는 데이터들이 Key, Value의 한 쌍을 이룬다는 것이다.
  • Key는 중복을 허용하지 않는다.

 

이때 Key와 Value의 관계 아래와 같이 설명할 수 있다.

 

key를 통해 value를 불러온다.

마치 index를 통해 value를 불러오는 것과 같은 관계이다.

 

key를 index의 개념으로 받아들이면 왜 Key는 중복이 허용되지 않는지 알 수 있다.

index는 중복으로 사용할 수 없는 것과 같다.

 

key와 value로 한 쌍을 만드는 것을 mapping이라고 한다.

 

mapping

 

 

Map<K,V>에도 사용할 수 있는 메소드들이 많다.

 

Map을 구현한 HashMap클래스를 통해서 설명하겠다.

 

Map<K,V>의 구현체 중에선 HashMap을 가장 많이 쓴다.

 

hashMap 생성
실행 결과

 

해당 예제를 통해 HashMap 클래스의 생성을 확인했다. 예제에선 안보이지만 HashMap을 import 하였다.

원하는 2개의 클래스 자료형을 지정해 주면 된다. (Generics)

 

이제 Map<K,V>에서 사용할 수 있는 메소드에 대해 알아보겠다.

 

메소드 설명
put(K key, V value) 원소 추가
replace(K key, V value) 원소 변경
remove(Object key) 원소 제거
get(Object key) key에 대응하는 value 반환
keySet() 존재하는 key로 만들어진 Set 반환
containsKey(Object key) 해당 객체내에 key가 존재하는지 확인
size() 원소 개수 반환

 

실제로는 더 많지만 위의 메소드가 가장 많이 쓰인다.

 

  • put을 사용하여 원소를 추가한다. 이때 key와 value 모두 전달해주어야 한다.
  • remove, get, containsKey 모두 key를 인자로 받는다. (Mapping)
  • Map에서도 Iterator를 사용할 수 있다. 필요에 따라 사용하면 되겠다.

 

추가적으로 기억해야 하는 것이 당연하지만 사용하는 key의 클래스 자료형이

Map 선언시 입력했던 클래스 자료형과 같아야 호환이 된다.

 

이제 예제를 통해 어떻게 사용하는지 확인해 보겠다.

 

HashMap methods
실행 결과

 

위의 메소드를 사용할 때 메소드가 어떤 값을 인자로 받는지만 주의하면 된다.

 

그럼 이제 순서가 없는 Map을 순회하는 방법에 대해 알아보겠다.

 

HasmMap 순회
실행 결과

 

첫번째 방법은 정석적인 방법이고

두번째 방법은 for문을 이용한 방법이다. for each문을 사용한 것이다.

 

 

HashMap은 Key와 Value를 mapping하여 하나의 단위로 취급해 데이터를 저장한다.