Java
[Java] LinkedHashMap
NJ94
2023. 12. 24. 15:56
HashMap vs. LinkedHashMap:
- HashMap: 이 데이터 구조는 해시 함수를 사용하여 요소를 저장하며, 내부적으로 순서를 유지하지 않습니다. 키(key)의 순서는 해시맵에 추가된 순서와 무관하게 정렬됩니다.
- LinkedHashMap: 이것은 HashMap의 하위 클래스로, 삽입된 순서대로 요소를 유지합니다. 따라서 LinkedHashMap을 사용하면 요소가 삽입된 순서대로 순회할 수 있습니다.
Map<String, String> linkedHashMap = new LinkedHashMap<>();
LinkedHashMap
LinkedHashMap은 Java에서 제공하는 Map 인터페이스를 구현한 클래스 중 하나입니다. 이 클래스는 HashMap을 확장하며, 특정 순서로 키-값 쌍을 유지합니다
- 순서 유지: 요소들을 삽입된 순서대로 유지합니다. 따라서 요소들을 추가한 순서대로 반복문을 사용하여 접근할 수 있습니다. 이는 LinkedHashMap이 내부적으로 연결 리스트로 구현되어 있어 가능합니다.
- 내부 구현: HashMap과 달리, LinkedHashMap은 해시 테이블과 함께 연결 리스트로 각 엔트리(entry)를 관리합니다. 해시 테이블은 빠른 조회를 위해 사용되고, 연결 리스트는 삽입 순서를 유지합니다. 따라서 검색 및 순회 모두에서 성능이 우수합니다.
Map<K, V> linkedHashMap = new LinkedHashMap<>(initialCapacity, loadFactor, accessOrder);
- initialCapacity: LinkedHashMap의 초기 용량을 설정합니다. 요소 수에 대한 초기 용량을 의미합니다.
- loadFactor: 해시 테이블이 얼마나 채워졌을 때 크기를 조정할 지 결정하는 요소입니다.
- accessOrder: 이 매개변수가 true로 설정되면, 엔트리의 액세스 순서에 따라 맵의 순서가 변경됩니다. 이는 캐시 구현 등에 유용하게 사용될 수 있습니다.
// LinkedHashMap 생성
Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
// 요소 추가
linkedHashMap.put(1, "One");
linkedHashMap.put(2, "Two");
linkedHashMap.put(3, "Three");
// 삽입된 순서대로 출력
for (Map.Entry<Integer, String> entry : linkedHashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
LinkedHashMap은 순서가 중요한 경우에 유용하며, 특히 요소의 삽입 순서를 유지하면서도 해시 맵의 빠른 검색 속도를 활용해야 할 때 많이 사용됩니다.