Kotlin- Map의 종류(TreeMap, LinkedHashMap, HashMap)
TreeMap
BST(자식노드 2개인 BinarySearchTree) 중에서도 RB tree를 사용하여 만들어진 트리 맵.
get(), getOrDefault(), put(), remove(), containsKey() 모두 O(logN) 의 시간복잡도를 가진다.
-> HashMap이나 LinkedHashMap보다 전반적으로 더 느린 속도를 보이지만, NavigableMap과 SortedMap의 함수들을 사용하여 장점을 살리는 구체화된 목적에 사용될 수 있다!
fun main(){
val treeMap = TreeMap<Char, Int>() //빈 treeMap 생성
val treeMap2 = TreeMap<Char, Int> {c1, c2 -> c2.compareTo(c1)} //Comparator를 인자로 받아 key값의 역순으로 정렬하는 treeMap 생성
val treeMap3 = TreeMap<Char, Int>(treeMap2) //SortedMap이나 Map을 인자로 받아 treeMap 생성
}
HashMap
순서를 유지하지 않음.
빠른 접근 속도. collision이 일어나는 경우 조금 느려짐.
배열을 기반으로 데이터를 관리하기 때문에, 데이터의 총 개수를 대충 알고 있다면 초기용량을 정해주자.
get(), getOrDefault(), put(), remove(), containsKey() 모두 O(1) 의 시간복잡도를 가진다.
key를 통해 검색하지 않고 Value를 통해 검색한다면 O(N)
fun main(){
val hashMap = HashMap<String, Int>() //빈 HashMap 생성(초기 용량:16, load factor:0.75)
val hashMap2 = HashMap<String, Int>(5) //초기 용량이 5인 HashMap 생성
val hashMap3 = HashMap<String, Int>(5,0.8f) //초기 용량이 5이고 load factor가 0.8인 HashMap 생성
val hashMap4 = HashMap<String, Int>(hashMap) //Map을 인자로 받아 HashMap 생성
}
LinkedHashMap
데이터를 추가한 순서대로 데이터를 보관 - iterate시 데이터 순으로 접근
데이터 저장 순서를 기억하기 위해 저장공간을 HashMap보다 필요로 함.
빠른 접근 속도. collision이 일어나는 경우 조금 느려짐.
배열을 기반으로 데이터를 관리하기 때문에, 데이터의 총 개수를 대충 알고 있다면 초기용량을 정해주자.
시간복잡도는 HashMap과 동일
fun main(){
//빈 LinkedHashMap 생성(초기 용량:16, load factor:0.75)
val linkedHashMap = LinkedHashMap<Char, Int>()
//초기 용량이 5인 LinkedHashMap 생성
val linkedHashMap2 = LinkedHashMap<Char, Int>(5)
//초기 용량이 5이고 load factor가 0.8인 LinkedHashMap 생성
val linkedHashMap3 = LinkedHashMap<Char, Int>(5, 0.8f)
//초기 용량이 5이고 load factor가 0.8이며 Map에 추가한 순서대로 LinkedHashMap 생성
val linkedHashMap4 = LinkedHashMap<Char, Int>(5, 0.8f, false)
//Map을 인자로 받아 LinkedHashMap 생성
val linkedHashMap5 = LinkedHashMap<Char, Int>(linkedHashMap)
//빈 HashMap 생성(초기 용량:16, load factor:0.75)
val linkedHashMap6 = mutableMapOf<Char, Int>()
//들어갈 key, value 쌍을 나열해서 LinkedHashMap 만들기
val linkedHashMap7 = mutableMapOf('A' to 0, 'B' to 1, 'C' to 2)
}
Ref.
https://medium.com/depayse/kotlin-collections-2-map-hashmap-treemap-linkedhashmap-76195842f0c8
Author And Source
이 문제에 관하여(Kotlin- Map의 종류(TreeMap, LinkedHashMap, HashMap)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@suev72/Kotlin-Map의-종류TreeMap-LinkedHashMap-HashMap저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)