안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
컬렉션이란?
- 동일한 타입을 묶어 관리하는 자료 구조
컬렉션 프레임워크란?
- 리스트, 스택, 큐, 트리 등의 자료구조에 정렬, 탐색 등의 알고리즘을 구조화해 놓은 프레임워크
- 여러 개의 데이터 묶음 자료를 효과적으로 처리하기 위해 구조화된 클래스 또는 인터페이스의 모음
컬렉션의 특성에 따라 구분하면 크게 List<E>, Set<E>, Map<K, V>로 나뉩니다.
메모리의 입출력 특성에 따라 기존 컬렉션 기능을 확장/조합한 Stack<E>, Queue<E>도 있습니다.(사진에선 누락)
☞ Map<K, V> 컬렉션 인터페이스
- 사진 상에도 나와있듯이, Map<K, V> 컬렉션은 상속 구조상 List<E>, Set<E>와 분리 (별도 인터페이스 존재)
- Key(키)와 Value(값)의 한 쌍으로 데이터 저장
- 한 쌍의 데이터를 '엔트리'라고 하며, Map.Entry 타입으로 정의
- 데이터를 엔트리 단위로 입력 받음
- Key값으로 Value를 가져오므로 Key 값은 중복 불가, Value 값은 중복 가능
Map<K, V>의 주요 메소드
구분 | 리턴 타입 | 메소드명 | 기능 |
데이터 추가 | V | put(K key, V value) | 입력매개변수의 (key, value)를 Map 객체에 추가 |
void | putAll(Map<? extends K, ? extends V> | 입력매개변수의 Map 객체를 통째로 추가 | |
데이터 변경 | V | replace(K key, V value) | Key에 해당하는 값을 Value 값으로 변경(old 값 리턴) (단, 해당 Key가 없으면 null 리턴) |
boolean | replace(K key, V oldValue, V newValue) | (key, oldValue)의 쌍을 갖는 엔트리에서 oldValue를 newValue로 변경 (단, 해당 엔트리가 없으면 null 리턴) |
|
데이터 정보 추출 |
V | get(Obejct key) | 매개변수의 Key 값에 해당하는 oldValue를 리턴 |
boolean | containsKey(Object key) | 매개변수의 Key 값이 포함돼 있는 지 여부 | |
boolean | containsValue(Object value) | 매개변수의 Value 값이 포함돼 있는지 여부 | |
Set<K> | keySet() | Map 데이터들 중 Key들만 뽑아 Set 객체로 리턴 | |
Set<Entry<K, V>> | entrySet() | Map의 각 엔트리들을 Set 객체로 담아 리턴 | |
int | size() | Map에 포함된 엔트리의 개수 | |
데이터 삭제 | V | remove(Object key) | 입력매개변수의 Key를 갖는 엔트리 삭제 (단, 해당 Key가 없으면 아무런 동작을 하지 않음) |
boolean | remove(Object key, Object value) | 입력매개변수의 (key, value)를 갖는 엔트리 삭제 (단, 해당 엔트리가 없으면 아무런 동작을 하지 않음) |
|
void | clear() | Map 객체 내의 모든 데이터 삭제 |
☞ LinkedHashMap<K, V>
- 기본적으로 HashMap<K, V>과 동일
- 입력 데이터의 순서 정보를 유지
LinkedHashMap<K, V> 객체 생성
Map<제네릭 타입 지정, 제네릭 타입 지정> 참조변수 = new LinkedHashMap<>();
LinkedHashMap<제네릭 타입 지정, 제네릭 타입 지정> 참조변수 = new LinkedHashMap<>();
Map<Integer, String> map1 = new LinkedHashMap<>();
LinkedHashMap<Integer, String> map2 = new LinkedHashMap<>();
HashMap<K, V> 출력 - 입력 순서를 유지하지 않음
Map<Integer, String> hashMap = new HashMap<>();
hashMap.put(2, "신사임당");
hashMap.put(1, "홍길동");
hashMap.put(3, "세종대왕");
System.out.println(hashMap);
@콘솔출력값
{1=홍길동, 2=신사임당, 3=세종대왕}
HashMap<K, V>은 입력 순서를 유지해주지 않기 때문에 입력한 순서와 출력 순서가 상이합니다.
LinkedHashMap<K, V> 출력 - 입력 순서를 유지
Map<Integer, String> LinkedHashMap = new LinkedHashMap<>();
LinkedHashMap.put(2, "신사임당");
LinkedHashMap.put(1, "홍길동");
LinkedHashMap.put(3, "세종대왕");
System.out.println(LinkedHashMap);
@콘솔출력값
{2=신사임당, 1=홍길동, 3=세종대왕}
LinkedHashMap<K, V>은 입력 순서를 유지해주기 때문에 입력 순서와 출력 순서가 동일한 것을 확인할 수 있습니다.
이 외 사용 방법이 HashMap<K, V>과 동일하기 때문에 따로 실습 하진 않겠습니다.
HashMap<K, V> 참고 링크
https://chanychu.tistory.com/138
'Java > Java' 카테고리의 다른 글
컬렉션/Map<K, V>) Properties, 설정 파일 쓰고 읽어오기 (0) | 2022.04.02 |
---|---|
컬렉션/Map<K, V>) TreeMap<K, V>, 주요 메소드 (0) | 2022.04.02 |
컬렉션/Map<K, V>) HashMap<K, V>, 주요 메소드 (0) | 2022.04.02 |
컬렉션/Set<E>) TreeSet<E>, 주요 메소드, 크기 비교 (0) | 2022.04.01 |
컬렉션/Set<E>) LinkedHashSet<E>, 주요 메소드 (0) | 2022.03.31 |