"마지막으로 지도에 대해 말씀드리겠습니다."

"아시다시피 지도는 키-값 쌍 세트를 저장합니다. 키는 고유해야 하지만 값은 무엇이든 될 수 있습니다. 키-값 쌍을 지도에 추가하고 컬렉션에 이미 키가 포함되어 있으면 이전 값은 새 값으로 대체됩니다. 즉 , 키는 모든 개체가 될 수 있는 특수 인덱스처럼 작동합니다 ."

맵은 (x, y) 쌍의 집합을 나타내는 수학 용어이며 각 고유 x는 일부 y에 해당합니다.

프로그래머는 Map을 매우 좋아하므로 여기서는 Map 인터페이스를 구현하는 4가지 컬렉션을 제시합니다.

"간단한 상속 구조는 다음과 같습니다."

맵 계층 구조 - 1

"노란색은 Entry 가 Map 인터페이스 의 중첩된 인터페이스임을 나타냅니다 ."

"요소 쌍을 단일 엔터티로 설명하기 위해 항목이 추가되었습니다."

"Map<K,V>의 방법은 다음과 같습니다."

행동 양식 설명
int size() 맵의 쌍 수를 반환합니다.
boolean isEmpty() 맵이 비어 있는지 확인합니다.
boolean containsKey(Object key) 맵에 지정된 키가 포함되어 있습니까?
boolean containsValue(Object value) 맵에 지정된 값이 포함되어 있습니까?
V get(Object key) 지정된 키의 값을 반환합니다.
V put(K key, V value) 키의 새 값을 설정합니다.
메서드는 이전 값 또는 null을 반환합니다.
putAll(Map<? extends K, ? extends V> m) 다른 맵에서 쌍을 추가합니다.
void clear() 맵을 지웁니다. 즉, 모든 쌍을 제거합니다.
Set<K>keySet() 키 집합을 반환합니다.
Collection<V>values() 값 모음을 반환합니다.
Set<Map.Entry<K, V>>entrySet() 쌍의 집합을 반환합니다.

"K와 V는 키와 값의 유형 매개변수입니다."

"글쎄, 나는 대부분의 방법에 익숙하지만 그 중 일부만 사용했습니다."

"엔트리 클래스에 대해 무엇을 더 말씀해 주시겠습니까?"

"이 클래스는 한 쌍의 요소를 설명합니다. 몇 가지 메서드가 있습니다."

행동 양식 설명
getKey() 키-값 쌍의 키를 반환합니다.
getValue() 키-값 쌍의 값을 반환합니다.
setValue(V value) 키-값 쌍에 새 값을 설정합니다.

"맵 전체를 거치지 않고 한 쌍을 메서드에 전달할 수 있어 진입이 편리합니다."

"알겠어요."

"이제 지도 구현에 대해 살펴보겠습니다."

"첫 번째는 HashMap 입니다 . 해시 테이블을 사용하여 요소를 저장합니다. 키와 값은 null뿐만 아니라 모든 유형일 수 있습니다. 요소의 순서는 컬렉션이 변경될 때 변경될 수 있습니다 ."

"요소는 HashMap에 그룹 또는 버킷 세트로 저장됩니다. 요소의 hashCode() 메서드는 요소가 속하는 버킷을 결정합니다."

"매우 대략적으로 말하면 1에서 100까지의 해시 코드를 가진 요소는 첫 번째 버킷에 속하고 101에서 200까지의 값을 가진 요소는 두 번째 버킷에 속합니다."

"이러한 방식으로 요소를 저장하는 포인트는 요소를 검색하거나 제거할 때 관련 없는 버킷의 모든 요소를 ​​제거할 수 있다는 것입니다."

"알겠어요."

"HashMap에 대한 정말 좋은 기사가 있습니다. 읽어 보시기 바랍니다: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "

"두 번째 컬렉션은 LinkedHashMap 입니다. HashMap과의 주요 차이점은 항목을 연결된 목록으로 저장한다는 것입니다. 일반 HashMap에서는 요소의 순서가 정의되지 않으며 시간이 지남에 따라 변경될 수 있습니다. 그리고 LinkedHashMap에서 반복자를 가져올 수 있습니다. LinkedHashMap에 추가된 순서대로 모든 요소를 ​​탐색하는 데 사용합니다. 또한 LinkedHashMap에는 마지막 사용/활동 순서대로 모든 쌍을 탐색할 수 있는 반복자가 있습니다."

"LinkedHashMap에 대한 정말 좋은 기사가 있습니다. 여기 있습니다: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "

"오늘 이야기하고 싶은 세 번째 컬렉션은 TreeMap 입니다 ."

" TreeMap은 요소를 오름차순으로 정렬된 상태로 유지합니다. 이는 TreeMap이 균형 잡힌 레드-블랙 트리를 사용하여 요소를 저장하기 때문에 가능합니다."

"결과적으로 삽입 시간과 검색 시간이 매우 짧습니다. 이 클래스는 매우 많은 양의 데이터를 사용할 때 탁월한 선택입니다."

"물론 TreeMap에 대한 기사도 있습니다. https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "

"내가 아직 말하지 않은 것은 무엇입니까?"

"WeakHashMap이지만 Rishi는 며칠 전에 그것에 대해 이야기했습니다."

"언제였어?"

"그가 SoftReference, WeakReference 및 PhantomReference에 대해 이야기했을 때."

"당신이 이름을 모두 올바르게 지었다는 것을 고려하면 당신을 믿습니다. 그럼 편안히 쉬십시오. 오늘 밤에 뵙겠습니다."

"안녕, 엘리."