딕셔너리(Dictionary)란?
사전의 각 내용이 표제어: 설명
의 구조 (ex. 사과: 빨간색의 상큼한 맛의 과일
) 로 되어 있는 것처럼, 데이터를 KEY: VALUE의 모음으로 관리하는 자료구조이다.
어떤 항목과 다른 항목의 관계를 모형화 하는데 좋다.
맵(Map) 또는 연관 배열(Associative Array)라고도 한다.
집합(Set, 집합 문서 참고)을 KEY-VALUE 구조로 확장한 자료구조로서, 값은 [KEY, VALUE] 형태로 저장되며 중복되지 않는다.
인터페이스
- set(key, value) - 딕셔너리에 요소를 추가한다.
- has(key) - key에 해당하는 요소가 있는 지 확인한다.
- get(key) - key에 해당하는 값을 반환한다.
- delete(key) - key에 해당하는 요소를 삭제한다.
- size() - 딕셔너리에 들어있는 요소의 개수를 반환한다.
- clear() - 모든 요소를 삭제한다.
구현 - JavaScript에서의 딕셔너리
JavaScript에서는 ES6부터 Map객체를 제공하므로, 이것을 이용하면 된다.
JavaScript의 객체(Object)도 연관배열로 구현되어 있으므로 사용가능 하지만,
Map객체가 데이터 관리에 유용한 메서드를 더 많이 지원하고 좀 더 유연하게 사용가능하다.
// Map 객체를 사용
const map = new Map();
map.set(("배": "속살이 하얗고 달다"));
map.set(("사과": "빨갛고 상큼하다"));
console.log(map.get("배")); // -> "속살이 하얗고 달다"
// Object 객체를 사용
const obj = {};
obj["배"] = "속살이 하얗고 달다";
obj["사과"] = "빨갛고 상큼하다";
console.log(obj["배"]); // -> "속살이 하얗고 달다"
활용 사례
JavaScript의 객체가 Dictionary로 구현되어 있다.
확장 - 해시 테이블 Hash Table [해시 맵 Hash Map]
딕셔너리에 해시함수를 추가하여 성능을 개선한 자료구조이다.
상세 설명은 해시 테이블 Hash Table 페이지에 정리했다.
- 아디트야 바르가바, 『Hello Coding 그림으로 개념을 이해하는 알고리즘』, 김도형, 한빛미디어(2017)
- 스기우라 켄, 『그림으로 배우는 알고리즘』, 서재원, 영진(2016)
- 이소 히로시, 『모던 자바스크립트 입문』, 서재원, 길벗(2018)
- Martin Erwig, 『그들은 알고리즘을 알았을까?』, 송원형, 영진(2017)
- Loiane Groner, 『자바스크립트 자료 구조와 알고리즘』, 이일웅, PACKT-에이콘(2015)
글쓴이쿠스, Qus
직업은 소프트웨어 개발자.
기술로 사회문제를 해결하는 시빅해킹(Civic Hacking)에 관심이 많고,
이것저것 생각나는 것들을 글로 정리하는 것을 좋아합니다.
기술로 사회문제를 해결하는 시빅해킹(Civic Hacking)에 관심이 많고,
이것저것 생각나는 것들을 글로 정리하는 것을 좋아합니다.
'자료구조/알고리즘' 시리즈의 다른 이야기들