Map은 키(key)와 값(value)을 연관시키는 자료구조이다. 이는 사전과 유사한 구조로, 각 키는 고유한 값을 가진다.
Java에서 Map은 인터페이스로 정의되어 있으며, 이를 구현한 여러 가지 클래스가 있다.
Map 주요 특징
- 키-값 저장: Map은 키(key)와 값(value)의 쌍으로 데이터를 저장한다. 각 키는 고유해야 하며, 하나의 값에만 매핑된다.
- 중복 키 불가: Map은 각 키가 고유해야 한다. 따라서 동일한 키를 두 번 이상 추가할 수 없다. 키의 유일성은 Map 내에서 보장된다.
- 순서 보장하지 않음: Map은 키-값 쌍을 저장하는데 순서를 유지하지 않는다. 따라서 Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있다.
Map 주요 기능 및 메서드
- 키-값 저장: Map은 키와 값의 쌍을 저장한다.
- 메서드: put(key, value)
- 설명: 지정된 키와 값을 매핑하여 Map에 저장한다.
- 반환값: 이전에 키에 매핑되어 있던 값, 없으면 null을 반환한다.
- 메서드: put(key, value)
- 데이터 검색: 주어진 키를 사용하여 매핑된 값을 검색한다.
- 메서드: get(key)
- 설명: 지정된 키에 매핑되어 있는 값을 반환한다.
- 반환값: 지정된 키에 매핑되어 있는 값, 없으면 null을 반환한다.
- 메서드: get(key)
- 데이터 추가 및 갱신: 새로운 키-값 쌍을 추가하거나, 기존 키에 매핑된 값을 갱신한다.
- 메서드: put(key, value)
- 설명: 지정된 키와 값을 매핑하여 Map에 저장합니다. 이미 존재하는 키인 경우 해당 키에 새로운 값을 덮어쓴다.
- 반환값: 이전에 키에 매핑되어 있던 값, 없으면 null을 반환한다.
- 메서드: put(key, value)
- 데이터 삭제: 특정 키에 해당하는 값을 삭제한다.
- 메서드: remove(key)
- 설명: 지정된 키에 매핑되어 있는 값을 제거한다.
- 반환값: 지정된 키에 매핑되어 있던 값, 없으면 null을 반환한다.
- 메서드: remove(key)
- 크기 확인: Map의 크기(키-값 쌍의 수)를 확인한다.
- 메서드: size()
- 설명: Map에 포함된 키-값 쌍의 수를 반환한다.
- 반환값: Map에 포함된 키-값 쌍의 수를 반환한다.
- 메서드: size()
- HashMap: 가장 일반적으로 사용되는 Map 구현체로, 해시 테이블을 사용하여 키-값 쌍을 저장한다. 요소의 삽입과 조회가 빠르며, 순서를 보장하지 않는다.
- LinkedHashMap: **HashMap**의 확장으로, 요소들이 추가된 순서를 유지한다. 이는 내부적으로 링크드 리스트를 사용하여 요소의 순서를 기록한다.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class HashMapTest {
public static void main(String[] args) {
// key, value 구조 한 쌍이다
// 업 캐스팅된 상태이다.
Map<String, String> books = new HashMap<String, String>();
// 추가 : 데이터 추가
books.put("해리포터", "J.K 롤링");
books.put("반지의 제왕", "J.R.R 톨킨");
books.put("1984", "조지오웰");
// 읽기 : 데이터 읽기
String author = books.get("해리포터");
System.out.println("해리포터 저자 : " + author);
String author2 = books.get("1984");
System.out.println("1984 저자 : " + author2 );
// 수정 : 데이터 수정
books.put("1984", "조조입니다");
System.out.println(books.get("1984"));
// 삭제 : 데이터 삭제
books.remove("1984");
// 유용한 기능 확인
// 1. 자료구조 map 에 저장되어 있는 key 값들을 확인하는 방법
System.out.println("map 자료구조의 key값 확인 " + books.keySet());
// 반복문 활용
// map 구조는 순서가 없어서 for -> use index 사용 불가
System.out.println("---------------");
for (String key : books.keySet()) {
System.out.println("key 값 호출 : " + key);
System.out.println("key를 통해서 value에 접근 : " + books.get(key));
}
// 두번째 방법
// 반복자 활용하는 방법
System.out.println("------------------------");
Iterator<Entry<String, String>> iter = books.entrySet().iterator();
while(iter.hasNext()) {
Entry<String, String> entry = iter.next();
System.out.println(" 책 : " + entry.getKey() + " , " + "저자 : " + entry.getValue());
}
System.out.println("--------------------------------------");
// 자료구조에서 제공하는 foreach 구문에 사용
// 람다 표현식 : 타입 추론이 가능해서 코드를 줄일 수 있음, 화살표기법을 사용한다.
books.forEach( (key,value) -> {
System.out.println("key : " + key);
System.out.println("value : " + value);
} );
// 전체 삭제
books.clear();
// 요소의 갯수 확인
System.out.println(books.size());
}// end of main
}
실행 결과________
'JAVA > Java 기초' 카테고리의 다른 글
[JAVA] 파일 입력 스트림(바이트 기반) (0) | 2024.05.16 |
---|---|
[JAVA] 표준 입출력 (0) | 2024.05.16 |
[JAVA] 프레임워크(collection framework) (0) | 2024.05.16 |
[JAVA] 자바 I/O 개론 (0) | 2024.05.16 |
[JAVA] LinkedList (0) | 2024.05.08 |