본문 바로가기

■ 프로그래밍/Front-end

자료 구조(Data Structure) (4) - Dictionary / HashMap / HashTable

Dictionary(혹은 HashMap, HashTable)는 Key-Value 형태의 값을 저장할 수 있는 자료구조이다. 

자바스크립트의 객체와 같다. 

 

Dictionary 특징

- Set처럼 특정 순서대로 데이터를 리턴하지 않음

- Key의 값이 중복될 수 없으며, 만약 중복된 key가 들어가면 먼저 있던 key와 value를 대체

- 수정 가능(mutable)

 

 

Dictionary 구조

출처: https://en.wikipedia.org/wiki/Hash_table

- Set과 비슷하게 key값의 해쉬값을 구한 후, 해쉬값에 속해있는 bucket에 값을 저장

- set과 마찬가지로 순서가 없고 중복된 key값은 허용되지 않음

 

 

Dictionary 사용

- 데이터베이스처럼 key-value를 묶어서 데이터를 표현해야 할 때

- 실제 데이터베이스에서 읽어들인 값을 dictionary로 변환해서 자주 사용

 

 

Dictonary 생성

// dictionary 생성 방법 1
// 데이터가 주어지거나 dictionary 내용이 변동되지 않을 경우 사용
dictionary1 = {
	"name": ["Ryan","Lee"], 
	"job": "sw engineer", 
	"address": {
    	"city":"seoul", 
        "zip_code":"1234"
     } 
}

// dictionary 생성 방법 2
// 데이터베이스를 조회해서 필요한 정보를 동적으로 채울때 사용 
dictionary2 = {}
dictionary2["name"] = ["Ryan", "Lee"]
dictionary2["job"] = "sw engineer"
dictionary2["address"] = {"city":"seoul", "zip_code":"1234"}

// dictionary 생성 방법 3
// 문자열만 키로 사용될 경우 사용
let dictionary3 = Object({ 
    "name":["Ryan","Lee"], 
    "job":"sw engineer", 
    "address":{
        "city":"seoul",
        "zip_code":"1234"
    } 
});

// 모두 다 같은 값 반환

접근 법은 객체와 같다. 

console.log(dictionary3.name) // output: ["Ryan", "Lee"]
console.log(dictionary3.address.city) // output: "seoul"
console.log(dictionary3.address.zip_code) // output: "1234"