LinkedHashMap
- LinkedHashMap은 HashMap의 기능을 그대로 유지하면서, 입력 순서를 기억하는 Map입니다.
- 내부적으로 해시 테이블 + 이중 연결 리스트를 사용하여, 순서를 보장합니다.
주요 특징
자료구조 |
HashMap + 이중 연결 리스트 |
정렬 여부 |
❌ |
삽입 순서 유지 |
✅ |
null 허용 |
✅ (Key 1개, Value 다수 허용) |
시간 복잡도 |
평균 O(1) |
특징 |
순서 + 빠른 접근이 필요한 경우 (ex. 캐시 구현) |
대표 메서드
package structure.map.linkedhashmap;
import java.util.LinkedHashMap;
public class LinkedHashMapClass {
private final LinkedHashMap<Integer, String> linkedHashMap;
public LinkedHashMapClass(LinkedHashMap<Integer, String> linkedHashMap) {
this.linkedHashMap = linkedHashMap;
}
// 맵에 키-값 쌍을 추가하거나 업데이트합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public LinkedHashMap<Integer, String> put(int key, String value) {
this.linkedHashMap.put(key, value);
return this.linkedHashMap;
}
// 지정된 키에 해당하는 값을 반환합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public String get(int key) {
return this.linkedHashMap.get(key);
}
// 지정된 키에 해당하는 항목을 제거합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public LinkedHashMap<Integer, String> remove(int key) {
this.linkedHashMap.remove(key);
return this.linkedHashMap;
}
// 맵에 지정된 키가 포함되어 있는지 확인합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public boolean containsKey(int key) {
return this.linkedHashMap.containsKey(key);
}
// 맵에 지정된 값이 포함되어 있는지 확인합니다.
// 시간 복잡도: O(n)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public boolean containsValue(String value) {
return this.linkedHashMap.containsValue(value);
}
// 맵의 모든 요소를 제거합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public void clear() {
this.linkedHashMap.clear();
}
// 맵이 비어 있는지 확인합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public boolean isEmpty() {
return this.linkedHashMap.isEmpty();
}
// 맵의 요소 개수를 반환합니다.
// 시간 복잡도: O(1)
// 예외 발생: NullPointerException - linkedHashMap이 null인 경우
public int size() {
return this.linkedHashMap.size();
}
}