프로그래밍

자료구조 - Map은 Ordered?

ZenoAhn 2016. 12. 7. 01:07

오늘은 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