728x90
< Map 자료구조 컬렉션 클래스에 대한 이해 >
Map 자료 구조 데이터
- 하나의 데이터를 설명하기 위한 여러 속성 정보가 필요하다
- 속성 간에는 순서가 필요 없다
- 동일한 속성으로 여러 개 값이 존재하지 않는다
Map 자료 구조를 위해 정의된 인터페이스
- Pair(Key-Value) : 데이터 열 건을 하나의 객체로 관리한다
- Key는 중복을 허용하지 않고, Value는 중복을 허용한다
- 입력된 데이터에 순서가 존재하지 않는다
- Key는 Value를 찾기 위한 고유한 주소의 역할을 수행한다 (인덱스와 유사한 부분)
- Key는 List<E> 인터페이스의 인덱스와 다르게 순서 개념이 없다 (인덱스와 다른 부분)
- Pair(Key-Value) 형태로 데이터가 저장되는 구조여서 Collection<E> 인터페이스를 상속받지 않고 독립적으로 정의된다
Map<K, V> 인터페이스에 대한 이해
- 전체 객체를 다루는 메서드는 List<E> 인터페이스와 유사하다
- 그러나 개별 데이터를 다루는 메서드 List<E> 인터페이스와는 다르다
대표적인 Map 자료구조의 컬렉션 클래스
- HashMap<K,V> 가 가장 많이 사용되는 클래스
HashMap <K,V> 클래스에 대한 이해
- 다른 언어의 Dictionary와 유사한 컬렉션 클래스
- Key 값이 Hash 알고리즘을 이용해 구조화되어 있어 Key 값을 이용한 검색 속도가 빠르다
- java.util 패키지에 존재한다
< Map 자료구조 컬렉션 클래스의 활용 >
HashMap 객체 생성 문법
import java.util.HashMap;
HashMap<Key-Type-Class, Value-Type-Class> hashMap-name = new HashMap<>();
- import java.util.HashMap
- HashMap 클래스를 사용하기 위해 컴파일러에 해당 Class가 존재하는 패키지 정보를 제공한다
- HashMap
- 생성하고자 하는 객체가 HashMap 클래스임을 지정한다
- <Key-Type-Class, Value-Type-Class>
- 제네릭을 이용해 객체에서 사용할 Key와 Value의 데이터 타입을 지정한다
- 데이터 타입의 Class 이름 사용
- haspMap-name
- 생성하고자 하는 HashMap 객체의 변수명 지정
HashMap 객체 생성
HashMap <K,V> 객체의 데이터 추가
- V put(K key, V value)
- void putAll(Map<? extends K, ? extends V> m)
V put(K key, V value)
- 객체 생성 시 지정한 데이터 타입(<K, V>)의 Key-Value-Pair를 추가한다
- Key, Value 모두 null 값이 허용된다
- Key, Value 모두 특정 Class에 대한 객체 사용 가능 (Key에 mutable한 객체 사용은 지양)
- 객체에 등록되어 있는 Key를 인자로 전달 시 기존에 저장된 Value를 업데이트한다
- 그리고 업데이트 전 저장되어 있는 Value가 반환된다
- 순서 없이 Pari(Key, Value) 데이터가 추가된다
void putAll(Map<? extends K, ? extends V> m)
- 인자로 전달받은 Map 객체의 모든 Pari 데이터를 추가한다
- HashMap 객체 생성 시 정의한 데이터 타입(<K,V>)을 원소로 가지는 Map 객체여야 한다
- 인자로 전달받은 Map 객체에 기존 Key와 중복되는 Pair 존재 시 해당 값으로 업데이트한다
HashMap <K, V> 객체의 데이터 탐색
- V get(Object key)
- default V getOrDefault(Object key, V defaultValue)
- boolean containsKey(Object key)
- boolean containsValue(Object value)
- Collection <V> values()
- Set<K> keySet()
- int size()
V get(Object key)
- 전달받은 Key에 매핑된 Value를 반환한다
default V getOrDefault(Object key, V defaultValue)
- 전달받은 Key에 매핑된 Value를 반환한다
- 존재하지 않는 Key의 경우 인자로 전달받은 defaultValue를 반환한다
- defaultValue의 데이터 타입은 객체 생성 시 정의한 <K, V>이어야 한다
boolean containsKey(Object key)
- 전달 받은 Key가 객체에 존재하는지 확인한 후 수행 결과를 boolean 형태로 반환한다
boolean containsValue(Object value)
- 전달 받은 Value가 객체에 존재하는 지 확인한 후 수행 결과를 boolean 형태로 반환한다
Collection<V> values()
- 객체에 존재하는 모든 Value를 Collection 객체 형태로 반환한다
Set<K> keySet()
- 객체에 존재하는 모든 Key를 Set 객체 형태로 반환한다
int size()
- 객체에 존재하는 모든 Pari 데이터의 개수를 조회한다
HashMap <K,V> 객체의 데이터 변경
- void clear()
- V remove(Object key)
- boolean remove(Object Key, Object value)
void clear()
- 객체 내 모든 데이터를 제거한다
V remove(Object key)
- 전달받은 Key의 데이터 Pari를 제거하고 해당 Pair의 Value를 반환한다
boolean remove(Object ket, Object value)
- 전달받은 Key와 Value가 모두 일치하는 데이터 Pair를 제거하고 수행 결과를 boolean 타입으로 반환한다
- 전달받은 Key와 Value가 모두 일치하지 않는 데이터를 요청할 경우, false를 반환하고 삭제되지 않는다
728x90
'코드프레소 체험단 > Java 프로그래밍' 카테고리의 다른 글
[Java 프로그래밍 초급] Set 자료구조 컬렉션 클래스 (0) | 2022.06.10 |
---|---|
[Java 프로그래밍 초급] List 자료구조 컬렉션 클래스 (0) | 2022.06.09 |
[Java 프로그래밍 초급] 컬렉션 프레임워크 (0) | 2022.06.08 |
[Java 프로그래밍 초급] Map 자료구조 컬렉션 클래스 (0) | 2022.01.27 |
[Java 프로그래밍 초급] 객체지향 고급 (3) (0) | 2022.01.25 |
댓글