본문 바로가기
프로그래밍/JAVA

34 Map 컬렉션 클래스(HashMap)

by 윤지(●'◡'●) 2021. 4. 29.
반응형

 


Map 컬렉션 클래스

 

 

 

Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다.

Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로

저장하는 방식(key-value 방식)을 사용한다.

여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 한다.

 

 

Map 컬렉션 클래스의 특징

1. 요소의 저장 순서를 유지하지 않습니다.
2. 키는 중복을 허용하지 않지만, 값의 중복은 허용합니다. 

 

 

Map 컬렉션 클래스에 속하는 대표적인 클래스

1. HashMap<K, V>
2. Hashtable<K, V>
3. TreeMap<K, V>

 

 

이 중 HashMap에 대해 알아보자 :)

 

 

HashMap

 

HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나이다.

JDK 1.2부터 제공된 HashMap 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다.

 

HashMap 클래스는 Map 인터페이스를 구현하므로, 중복된 키로는 값을 저장할 수 없다.

하지만 같은 값(Values)을 다른 키(Key)로 저장하는 것은 가능하다.

 

 

[import]

import java.util.HashMap;

 

[선언]

HashMap<String, Integer> fruitMap = new HashMap<>();

 

[값 추가]

//hashmap은 add가 아닌 put으로 추가한다.
fruitMap.put("사과", 3500);
fruitMap.put("배", 4000);
fruitMap.put("포도", 2500);
fruitMap.put("사과", 4500); 
fruitMap.put("수박", 5000); 

 

HashMap에 값을 추가하려면 put(key,value) 메소드를 사용해야한다.

만약 입력되는 키 값이 HashMap 내부에 존재한다면 기존의 값은 새로 입력되는 값으로 수정되고

key가 없을때에는 신규 추가된다.

 

 

[값 삭제]

fruitMap.remove("수박");
// fruitMap.clear(); 전체삭제

 

 

[값 출력]

HashMap을 출력하는 방법은 다양하다. 아래 코드로 살펴보자 :)

 

 

1. 전체 출력

System.out.println(fruitMap);
{배=4000, 포도=2500, 사과=4500}

 

 

2. 키 값만 필요할 때 : keySet()

System.out.println(fruitMap.keySet());
Iterator<String> iter = fruitMap.keySet().iterator();
		
while(iter.hasNext()) {
	System.out.println(iter.next());
}
[배, 포도, 사과]
배
포도
사과

 

 

3. value값만 필요할 떼 : values()

System.out.println(fruitMap.values());
Iterator<Integer> iter2 = fruitMap.values().iterator();
while(iter2.hasNext()) {
	System.out.println(iter2.next());
}
[4000, 2500, 4500]
4000
2500
4500

 

 

 

4. 값과 키 둘다 필요할 때 : entryset()

Iterator<Entry<String, Integer>> iter3 = fruitMap.entrySet().iterator();
while(iter3.hasNext()) {
	Entry<String, Integer> entry = iter3.next();
	System.out.println(entry.getKey() + " : " + entry.getValue()+"원");
}
배 : 4000원
포도 : 2500원
사과 : 4500원

 

 

 

사진 출처 : https://coding-factory.tistory.com/

 


열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.

수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>

반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

36 동기화(synchronized)  (0) 2021.05.04
35 Thread  (0) 2021.05.04
33 Set 컬렉션 클래스(HashSet)  (0) 2021.04.29
32 접근 권한 제어자(접근자)  (0) 2021.04.22

댓글