Java LinkedHashMap 마스터: 생성, 연산, 성능 비교
Java LinkedHashMap 마스터: 생성, 연산, 성능 비교
Java의 LinkedHashMap을 실전 예제와 모범 사례를 통해 생성, 조작, 비교하는 방법을 알아봅니다.
LinkedHashMap 클래스는 Java 컬렉션 프레임워크에서 해시 테이블의 빠른 조회와 내부 이중 연결 리스트 덕분에 예측 가능한 반복 순서(삽입 순서 또는 접근 순서)를 결합합니다.
LinkedHashMap 생성하기
LinkedHashMap을 사용하려면 java.util.LinkedHashMap을 임포트하고 인스턴스화하세요. 생성자는 초기 용량, 부하 계수, 선택적 accessOrder 플래그를 받습니다.
// 초기 용량 8, 부하 계수 0.6인 LinkedHashMap
LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);
매개변수:
- capacity – 버킷 수, 기본값 16
- loadFactor – 테이블이 60% 찰 때 리사이즈 트리거, 기본값 0.75
- accessOrder –
false면 삽입 순서, true면 최소-최근 접근 순서
기본 설정 예제:
LinkedHashMap<Key, Value> defaultMap = new LinkedHashMap<>();
기존 맵에서 LinkedHashMap 생성하기
순서 보존을 위해 기존 맵을 LinkedHashMap으로 복사:
LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers);
numbers.put("Three", 3);
출력:
LinkedHashMap1: {Two=2, Four=4}
LinkedHashMap2: {Two=2, Four=4, Three=3}
핵심 연산
요소 삽입
put(key, value) – 매핑 추가 또는 교체
putIfAbsent(key, value) – 키가 없을 때만 추가
putAll(map) – 다른 맵 병합
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
numbers.putIfAbsent("Two", 2);
numbers.putAll(evenNumbers);
요소 접근
키, 값, 엔트리 검색:
entrySet() – 모든 키/값 쌍
keySet() – 모든 키
values() – 모든 값
get(key) – 값 또는 없으면 null
getOrDefault(key, default) – 폴백과 함께 안전한 검색
int val = numbers.get("Three");
int def = numbers.getOrDefault("Five", 5);
요소 제거
remove(key) – 키로 삭제
remove(key, value) – 값이 일치할 때만 삭제
clear() – 맵 초기화
containsKey(key) – 존재 확인
containsValue(value) – 존재 확인
size() – 엔트리 수
isEmpty() – 비어있는지 확인
LinkedHashMap vs HashMap
- LinkedHashMap은 삽입 순서 또는 접근 순서 보존, HashMap은 보장 안 함
- LinkedHashMap은 노드 링크로 추가 메모리 사용
- LinkedHashMap 반복은 약간 느리지만 예측 가능한 순서 제공