오늘은 Map에 궁금한것이 있어 찾아보았습니다.
Map이란 기본적으로 Key/Value의 형태를 가지고있는 자료구조라고 알려져있습니다.
웹서핑을 하던 도중 어떤분이 Map은 Ordered를 반드시 제공해야 Map이다. 라고 말씀하시는분이 있었습니다.
C++ STL에서 std::map의 내부 구현이 R-B Tree로 ordered를 제공하지만, Map이라는 자료구조가 무조건 ordered를 제공해야하는가?
에 대해 궁금해서 저도 다른 최신 언어들을 살펴보면서 찾아보게 되었습니다.
Map은 Ordered야 하는가?
Java
HashMap과 Map을 구분한다해서 찾아봤더니
map은 interface로 key-value pair 동작에 대한 명세를 적어두고,
그에대한 implementations 들은 HashMap, TreeMap, LinkedHashMap가 있다.
또한 OrderedMap interface라고해서 Map의 extends(상속) 클래스로 정렬을 제공한다 라고 명시되있습니다. C#
C# map을 검색할경우 Dictionary가 나오고 이에 관해서 궁금해서 찾아봤더니
[std::unordered_map -> Dictionary],
[std::map-> SortedDictionary]로 각 매핑하여 사용할 수 있다고 합니다.
Javascript
Map은 정렬되지 않는다고라고 정의되어있습니다.
그래서 판단한 결론은 다음과 같습니다.
map이란 key-value pair를 제공하는 자료구조이다. 최신 언어들에서 key-value의 자료형의 제공을 unordered로 제공하고 있고. C++에서는 Red-Black Tree를 통해 제공하고있다. 따라서 map은 ordered, unorderd와 무관 하다.
아래는 제가 각 참고한 문서에 대한 링크입니다. [Java] Map : https://docs.oracle.com/javase/7/docs/api/java/util/Map.html SortedMap: https://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html [C#] Dictionary: https://msdn.microsoft.com/en-us/library/xfhwa508.aspx SortedTree: https://msdn.microsoft.com/ko-kr/library/f7fta44c(v=vs.110).aspx [Javascript] Map: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
'프로그래밍' 카테고리의 다른 글
SVN-Git GitLab 마이그레이션 (0) | 2016.12.17 |
---|---|
Visual studio Teamservice - Agile Tool "BackLog" (0) | 2016.12.17 |
Windows에서 Jekyll 설치하기 (0) | 2016.12.01 |
access denied http 문제 (0) | 2016.12.01 |
d3 튜토리얼 (0) | 2016.05.16 |