본문 바로가기
Java/Java

컬렉션/Map<K, V>) LinkedHashMap<K, V>, 주요 메소드

by 박채니 2022. 4. 2.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


컬렉션이란?

- 동일한 타입을 묶어 관리하는 자료 구조

 

컬렉션 프레임워크란?

- 리스트, 스택, 큐, 트리 등의 자료구조에 정렬, 탐색 등의 알고리즘을 구조화해 놓은 프레임워크

- 여러 개의 데이터 묶음 자료를 효과적으로 처리하기 위해 구조화된 클래스 또는 인터페이스의 모음

 

컬렉션의 특성에 따라 구분하면 크게 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

 

컬렉션/Map<K, V>) HashMap<K, V>, 주요 메소드

안녕하세요, 코린이의 코딩 학습기 채니 입니다. 개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다. 컬렉션이란? - 동일한 타입을 묶어 관리하는 자료 구조 컬렉션 프레임워크

chanychu.tistory.com