🔷 해시맵(HashMap)이란?
말 그대로 해시(Hash) 기법을 사용한 맵(Map)으로, 데이터를 저장하기 위한 자료구조이다.
그렇다면 맵(Map)은 무엇이고 해시(Hash)는 무엇일까?
🔹맵 (Map)
맵은 키(Key)와 값(Value)이 쌍으로 저장하는 자료구조이다.
여기서 키와 값은 모두 객체로 구성되어있다.
키는 중복이 불가능하며, 하나의 값만 가질 수 있다.
값은 중복이 가능하며, 여러개의 키 값을 가질 수 있다.
🔹해시 (Hash)
해시는 단방향 암호화 기법으로 입력된 값을 출력 데이터의 위치 값으로 변환해준다.
해시 함수(Hash function)은 이 해시 기법을 사용하년 함수로, 입력값과 출력 데이터의 위치값을 연결(매핑, mapping) 해준다.
해시 기법은 시간복잡도는 평균적으로 O(1)인 자료구조로 데이터 접근, 검색에 용이하다.
다만, 데이터가 순서 없이 저장되므로 정렬이 필요하지 않고, 빠른 검색이 필요한 데이터에 사용한다.
🔷 해시맵 구조
해시는 다양한 길이를 가진 테이터를 고정된 길이를 가진 데이터로 매핑해준다.
해시맵의 자료구조는 해시 테이블로, 자료를 저장할 때 키(Key) 값을 해시 함수에 대입한다.
버킷 번호가 나오면, 버킷의 빈 슬롯에 자료를 저장한다.
키 값을 해시 함수에 입력하여 나오는 버킷 번호에 자료를 넣어, 방대한 양의 데이터에도 삽입, 삭제, 검색 속도가 거의 일정하다.
🔷 해시맵 사용법
HashMap -> 해시맵 초기 설정
put -> 해시맵에 데이터 추가
containKey -> 해시맵에 특정 key 값 포함 여부
get -> 해시맵의 특정 key 값 데이터 반환
for -> 해시맵의 데이터 순차 반환
replace -> 해시맵의 특정 key 값의 데이터 변경
remove -> 해시맵의 특정 key 값 삭제
clear -> 해시맵 전체 초기화
🔹HashMap
해시맵 초기 설정
val map : HashMap<DataType, DataType> = HashMap()
val map : HashMap<DataType, DataType> = HashMap(map)
🔹put
해시맵에 데이터 추가
map.put(key, value)
🔹containKey
해시맵에 특정 key 값 포함 여부
map.containKey(key)
🔹get
해시맵의 특정 key 값 데이터 반환
map.get(key)
✨ map과 map.get()의 출력 차이
map : key, value 전체 출력
map.get() : 해당 key 값의 value 출력
//해시맵 선언
val map = HashMap<String, String> = mapOf("코틀린" to "Kotlin")
//해시맵 데이터 추가
map.put( "자바", "Java")
//데이터 출력
println(map)
println(map.get("코틀린"))
===
//결과
{코틀린=kotlin, 자바=java}
kotlin
🔹for
해시맵의 데이터 순차 반환
for(String str : map.entrySet()){ //key, value 전체 출력
println(str)
}
for(Entry<DataType, DataType) entry : map.entrySet()){
println(entry.key() + " : " + entry.getValue())
}
for(Strin str : map.keySet()){ //key 전체 출력
println(str)
}
for ((key, value) in t_hashMap) {
println("전체 : ${key} : ${value}")
}
🔹replace
해시맵의 특정 key 값의 데이터 변경
map.replace(key, replace_value)
🔹remove
해시맵의 특정 key 값 삭제
map.remove(key)
🔹clear
해시맵 전체 초기화
map.clear()
🔷 해시맵 추가 사용법
🔹Inspector
해시맵과 자주 사용하는 인터페이스, 컬렉션에 저장된 요소를 읽어오는 방식
public interface Iterator{
boolean hasNext(); // 다음 요소 여부
object next(); // 다음 데이터 반환
void remove(); //읽어온 요소를 삭제
}
자주 사용되는 형태
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
println(map.get(keys.next()))
}
'개발새발 > 알고리즘' 카테고리의 다른 글
[Kotlin] 범위 지정 함수 - coerceIn, coerceAtMost, coerceAtLeast (0) | 2023.08.28 |
---|---|
[Kotlin] 꼬리 재귀 함수 - tailrec (3) | 2023.08.21 |
[Kotlin] 힙 - Heap (2) | 2023.08.07 |
[Kotlin] 큐 - Queue (3) | 2023.07.31 |
[Kotlin] 스택 - Stack (2) | 2023.07.31 |