일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- where
- JavaScript
- 웹개발
- 클래스
- 백준
- 스프링
- BufferedReader
- order by
- 프로그래머스 sql 고득점 kit
- 메서드
- Java
- github
- 리눅스
- html
- 프론트엔드
- StringBuilder
- SQL
- 예외처리
- 정보처리기사필기요약
- 프로그래머스 SQL
- 정보처리기사
- 데이터 조회
- scanner
- Linux
- 백엔드
- Git
- String클래스
- sql문
- DML
- 입출력
- 자바
- 프로그래밍
- select문
- MySQL
- 자바스크립트
- 개발자
- mybatis
- 알고리즘
- 형변환
- select
- Today
- Total
ToBe끝판왕
[ JAVA ] 컬렉션 프레임워크 (3) - Map 본문
컬렉션프레임워크 - HashMap
• Map의 특징
- 키( key ) 와 값( value ) 의 쌍으로 이루어진 자료구조이다.
- 키( Key )는 Map 내에서 유일해야 한다.
- 값( Value ) 는 중복을 허용한다.
- Map은 순서를 유지하지 않는다.
• Map의 주요 메서드
메서드 | 설명 |
put( K key, V value ) | 지정된 Key 값과 Value 값을 Map 에 저장 |
get( Object key ) | 지정된 Key 값에 해당하는 Value 값을 반환 |
remove( Object Key ) | 지정된 Key 와 연결된 Value 를 Map에서 제거 |
clear() | Map에서 모든 Key 와 Value 를 제거 |
containsKey( Object Key ) | Map 에 지정된 Key를 포함하고 있는지 여부 반환 |
containsValue( Object Value ) | Map 이 하나 이상의 Key 에 지정된 Value를 연결하고 있는지 반환 |
keySet() | Map 의 Key들을 Set 형태로 반환 |
values() | Map 의 Value들을 Collection 형태로 반환 |
entrySet() | Map 의 Key - Value 쌍을 Set<Map.Entry<K,V>> 형태로 반환 |
size() | Map 에 있는 Key - Value 쌍의 개수를 반환 |
isEmpty() | Map 이 비어있는지 여부를 반환 |
• Map의 사용 예시
package hello.blog.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapEx01 {
public static void main(String[] args) {
Map<String, Integer> studentMap = new HashMap<>();
// Map 에 데이터 추가 -> put 메서드
studentMap.put("studentA", 90);
studentMap.put("studentB", 80);
studentMap.put("studentC", 80);
studentMap.put("studentD", 100);
System.out.println(studentMap);
// 특정 학생의 값 조회 -> get 메서드
System.out.println("== get() 메서드 활용 ==");
Integer result = studentMap.get("studentD");
System.out.println("result = " + result);
// keySet 활용
System.out.println("== keySet() 메서드 활용 ==");
Set<String> keySet = studentMap.keySet();
for (String key : keySet) {
Integer value = studentMap.get(key);
System.out.println("key = " + key + "value = " + value);
}
// entrySet 활용
System.out.println("== entrySet() 메서드 활용 ==");
Set<Map.Entry<String, Integer>> entries = studentMap.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key = " + key + ", value = " + value);
}
// values 활용
System.out.println("== value() 메서드 활용 ==");
Collection<Integer> values = studentMap.values();
for (Integer value : values) {
System.out.println("value = " + value);
}
}
}
// 실행 결과
{studentB=80, studentA=90, studentD=100, studentC=80}
== get() 메서드 활용 ==
result = 100
== keySet() 메서드 활용 ==
key = studentBvalue = 80
key = studentAvalue = 90
key = studentDvalue = 100
key = studentCvalue = 80
== entrySet() 메서드 활용 ==
Key = studentB, value = 80
Key = studentA, value = 90
Key = studentD, value = 100
Key = studentC, value = 80
== value() 메서드 활용 ==
value = 80
value = 90
value = 100
value = 80
- Map은 Key의 중복을 허용하지 않기 때문에, 모든 키 목록을 조회하는 keySet()을 호출하면 중복을 허용하지 않는
Set 자료구조를 반환한다.
- Entry는 Map 내부에서 Key와 Value를 하나로 묶어 저장할 때 사용한다.
- values() 를 사용하면 Map은 Value 의 중복을 허용하기 때문에, Set으로 반환할 수 없고, 순서를 보장하지도 않기 때문에 List로 반환할 수도 없다. 따라서 상위 인터페이스인 Collection으로 반환한다.
▶ Map 의 Key는 중복을 허용하지 않고 순서를 보장하지 않는다 = Set과 같은 구조이다.
▶ Map 은 모든것이 Key 중심으로 동작한다.
• HashMap / LinkedHashMap / TreppMap 대하여 알아보기
package hello.blog.map;
import java.util.*;
public class MapMainEx1 {
public static void main(String[] args) {
run(new HashMap<>());
run(new LinkedHashMap<>());
run(new TreeMap<>());
}
private static void run(Map<String, Integer> map) {
System.out.println("map = " + map.getClass());
map.put("C", 10);
map.put("B", 20);
map.put("A", 30);
map.put("1", 40);
map.put("2", 50);
Set<String> keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.print(key + "=" + map.get(key) + " ");
}
System.out.println();
}
}
// 결과
map = class java.util.HashMap
A=30 1=40 B=20 2=50 C=10
map = class java.util.LinkedHashMap
C=10 B=20 A=30 1=40 2=50
map = class java.util.TreeMap
1=40 2=50 A=30 B=20 C=10
- HashMap : 입력한 순서를 보장하지 않는다.
- LinkedHashMap : Key를 기준으로 입력한 순서 보장
- TreeMap : Key 자체의 데이터값을 기준으로 정렬
▶ Map 의 Key 로 사용되는 객체는 hashCode() , equals() 를 반드시 구현해야 한다.
▶ 실무에서는 Map 이 필요한 경우 HashMap 을 많이 사용한다. 그리고 순서 유지, 정렬의 필요에 따라서
LinkedHashMap , TreeMap 을 선택하면 된다.
※ 해당 내용은 인프런 김영한 강사님의 "실전 자바 중급2" 인강의 자료와 예시들을 참고하였습니다
'■ 프로그래밍 SKILLS > JAVA' 카테고리의 다른 글
[ JAVA ] 제네릭 ( Generic ) (3) | 2024.10.26 |
---|---|
[ JAVA ] 컬렉션 프레임워크 (2) - Set (5) | 2024.10.23 |
[ JAVA ] 컬렉션 프레임워크 (1) - List (3) | 2024.10.23 |
[ JAVA ] 예외 처리 (2) (0) | 2024.08.21 |
[ JAVA ] 예외 처리 (1) (0) | 2024.08.21 |