[java 기초] HashMap

이진영·2023년 6월 16일
0

JAVA 기초

목록 보기
6/9
post-thumbnail

HashMap이란?

HashMap은 기본적으로 Map인터페이스에 속해 있는 컬렉션이라고 볼 수 있습니다.

즉 Map 인터페이스의 기본 기능들을 포함하고 있으며, 모든 map형태의 데이터는 Key , Value로 이뤄지고 있습니다.

그렇다면 모든 데이터가 Key,Value로 이루어지고 있다는것은 하나의 Key값 당 하나의 Value만을 담고 있다는 의미인데. 자세한 그림으로 설명을 하자면 아래 그림과 같은 형태를 띄게 됍니다.

즉 위 그림으로 설명을 드리자면 하나의 key1 - key5 까지 하나의 각각 value1 - value5까지 하나씩 매핑이 되어있다고 보시면 편하실거 같습니다.

그렇다면 하나의 고유의 Key값당 값이 설정이 되어있다는 의미인데 그렇다면 중복 또한 이러한 Map에 형태의 맞게 중복이 불가능하다고 보면 된다. 즉 Key값은 중복이 불가능하고 Value는 언제든지 변경이 가능한 유동성이 있는 값이다.

여기서 그외 유사한 클래스로 HashTable이 있다. 여기서는 간단히만 알아보고자 한다.

  • Null 값 허용 여부

HashTable은 key에 null을 허용하지 않지만 HashMap은 key에 null을 허용합니다.

  • Tread-safe 여부

HashTable은 멀티스레드 환경에서 값의 무결성을 보장할 수 있지만, 이는 당연히 병목현상이 발생할 수 있다. 그렇기에 다중 환경이 아니라면 HashMap이 더 좋은 성능을 가지고 있다.


HashMap 사용법

put

기본적으로 Key Value의 쌍으로 값을 넣는 방식

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

for (int i = 0; i < 10; i++) {
	map.put(i, i + 1);
}

위와 같은 방식으로 for문으로 값을 넣었다고 했을 때 1,2,3,4,5,6,7,8,9,10이라는 데이터가 들어가 있을 것이다.

그렇다면 바로 Get 메소드를 통해서 Key 값에 해당하는 value를 가져올 수 있다.

get

for (int i = 0; i < 10; i++) {
	System.out.print(map.get(i) + " ");
}

아래와 같은 출력 결과를 가져올 수 있다.

KeySet , values

그렇다면 Map에서는 Key값들만 순서대로 , Values값들만 순서대로 가져올 수 있다.

for (int num : map.keySet()) {
	System.out.print("key : " + num + " ");
}
for (int num : map.values()) {
	System.out.print("value : " + num + " ");
}

그렇다면 이제는 Map의 고유특성만을 테스트하고 마칠려고 한다.

고유특성은 위에서 말했듯이 Key는 고유한 값이기에 변경이 불가능하다. 즉 중복이 불가능하다. 하지만 Value는 언제든지 Key값에 일치하기만 한다면 value는 언제든지 수정이 가능하다.

for (int i = 0; i < 10; i++) {
	map.put(i, i + 10);
}
System.out.println();
for (int i = 0; i < 10; i++) {
	System.out.print(map.get(i) + " ");
}

위의 1 - 10 까지의 데이터를 각각 10씩 더해서 출력을 해보자.

제대로 10씩 더해서 값들이 수정이 되고 있다.

이상으로 Map에 대한 노트를 간단히 마치기로 하겠다.

profile
내가 공부한 것들을 적는 공간

0개의 댓글