Java의 LinkedHashMap이란 무엇입니까?
Collections 프레임워크의 LinkedHashMap 클래스는 Map 인터페이스 의 Hashtable 및 LinkedList 구현 입니다 . 항목을 Hashtable에 저장 하고 내부적으로 이중 연결 목록을 사용하여 삽입 순서를 유지합니다. 이 LinkedList는 키가 Map 에 삽입된 순서인 삽입 순서를 정의합니다 . HashMap 은 빠른 삽입 , 검색 및 삭제 의 이점을 제공했지만 LinkedHashMap 에서는 LinkedList 구현이 삽입 순서도 유지합니다.
LinkedHashMap의 특징
- 여기에는 키를 기반으로 하는 값이 포함됩니다.
- 독특한 요소가 포함되어 있습니다.
- 하나의 null 키와 여러 개의 null 값이 있을 수 있습니다.
- 비동기화되어 있습니다.
- 반복 비용이 더 많이 발생하는 삽입 순서를 유지합니다.
성능 요인
LinkedHashMap 의 성능은 주로 아래에 설명된 두 가지 요소에 따라 달라집니다.용량
용량은 저장할 수 있는 항목 수를 의미합니다. 매개변수가 제공되지 않으면 기본 용량은 16 입니다. 로드 요소 로드 요소는 HashMap이 매개 변수로 제공된 특정 비율로 채워질 때마다 크기가 두 배인 새 HashMap이 생성되고 모든 항목이 이 새 항목으로 이동됨을 의미합니다. HashMap의 기본 로드 비율은 0.75 입니다 . 채우기 비율 이라고도 합니다 .LinkedHashMap 선언
LinkedHashMap 을 생성하려면 먼저 java.util.LinkedHashMap 패키지를 가져와야 합니다 .LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
여기서 Key는 맵의 키 유형입니다. 값은 맵에 매핑된 값의 유형입니다. 12 는 맵에 12개의 항목을 저장한다는 의미입니다. 0.5f 는 50%가 채워지면 새 맵을 생성 하고 모든 값을 이 새 맵으로 이동 한다는 것을 의미하는 로드 요소입니다 .
LinkedHashMap의 일반적인 방법
다음은 LinkedHashMap 의 몇 가지 일반적인 메서드 목록입니다 .행동 양식 | 설명 |
---|---|
분명한() | 지도의 모든 매핑을 제거합니다. |
containValue(객체 값) | 맵이 키를 지정된 값에 매핑하면 true를 반환합니다. |
엔트리셋() | 맵의 매핑에 대한 Set 뷰를 반환합니다. |
get(객체 키) | 지정된 키에 대한 값을 반환하거나 키가 지정되지 않은 경우 null을 반환합니다. |
키세트() | 맵에 있는 키의 Set 뷰를 반환합니다. |
값() | 맵에 있는 값의 컬렉션 뷰를 반환합니다. |
getOrDefault(객체 키, V defaultValue) | 지정된 키가 연결된 값을 반환하고, 연결된 키가 없으면 defaultValue를 반환합니다. |
LinkedHasMap 예
import java.util.LinkedHashMap;
class Main {
public static void main(String[] args) {
// Creating a LinkedHashMap of odd numbers
LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
// Using the put() method
oddNumbers.put("One", 1);
oddNumbers.put("Three", 3);
System.out.println("LinkedHashMap1: " + oddNumbers);
// Creating another LinkedHashMap
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("Two", 2);
// Using putAll() method
numbers.putAll(oddNumbers);
System.out.println("LinkedHashMap2: " + numbers);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet() method
System.out.println("Keys: " + numbers.keySet());
// Using values() method
System.out.println("Values: " + numbers.values());
// Using get() method
int value1 = numbers.get("Three");
System.out.println("Returned Number: " + value1);
// Using getOrDefault() method
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Returned Number: " + value2);
// Using remove() method
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using entrySet() method
System.out.println("Key/Value mappings: " + numbers.entrySet());
}
}
산출
LinkedHashMap1: {One=1, Three=3} LinkedHashMap2: {Two=2, One=1, Three=3} 키/값 매핑: [Two=2, One=1, Three=3] 키: [Two, One , Three] 값: [2, 1, 3] 반환된 숫자: 3 반환된 숫자: 5 제거된 값: 2 키/값 매핑: [One=1, Three=3]
LinkedHashMap과 HashMap 비교
둘 다 Map 인터페이스를 구현하는 반면, 둘 사이의 몇 가지 차이점을 살펴보겠습니다 .- LinkedHashMap은 내부적으로 이중 연결 목록을 구현하므로 삽입 순서를 유지합니다.
- LinkedHashMap은 LinkedList를 구현하므로 더 많은 저장 공간이 필요합니다 .
- 성능과 관련하여 LinkedHashMap은 HashMap 보다 느립니다 .
GO TO FULL VERSION