관리 메뉴

태섭씨 블로그

Dictionary Map 차이점 (자료구조) 본문

IT

Dictionary Map 차이점 (자료구조)

태섭씨 2015. 2. 2. 14:49

나중에 또 찾아볼 것을 대비하여 간략히 정리한다.


예전에 파이썬의 dictionary 자료구조를 접하고, 최근에 자바의 map 자료구조를 접했을때에 차이점이 뭔지 궁금했었다.

둘 다 key/value 구조를 가지고, key가 unique 하다는 점도 동일한데 왜 이름이 다를까.?


http://stackoverflow.com/a/2884200

위 링크를 보면 아래와 같이 나와있다.

Two terms for the same thing

"Map" is used by Java, C++
"Dictionary" is used by .Net, Python
"Associative array" is used by Javascript, PHP

"Map" is the correct mathematical term, but it is avoided because it has separate meaning in functional programming.

See here.

물론 여기 이렇게 나와있다고 100% 확신할 수는 없겠지만, 아마 큰 차이는 없을 것 같다...


--------------------------------------------------------------------

자바 기준으로 보자면, java se api 문서에는 일단 dictionary 와 map이 별도로 존재하긴 한다.

어디서 줏어들은 바로는, dictionary는 jdk 1.0 시절에 자료구조에 대한 상세한 설계없이 대충 만들었다가 하위호환을 위해서 어쩔수 없이 남겨뒀다고 하는데 맞는지는 모르겠다.

(interface가 아닌) abstract class 인 점, collections framework에도 포함안되는 것을 보면 맞지 싶다.


dictionary 

 - http://docs.oracle.com/javase/8/docs/api/java/util/Dictionary.html

 - since JDK 1.0 

 - NOTE: This class is obsolete. New implementations should implement the Map interface, rather than extending this class.

 - Direct Known Subclasses: Hashtable

     - subclass 로 hashtable 이 있는데, 이건 map 인터페이스를 implements 하고 있다...


map

 - http://docs.oracle.com/javase/8/docs/api/java/util/Map.html

 - since 1.2 

 This interface is a member of the Java Collections Framework.

 -An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value. 

This interface takes the place of the Dictionary class, which was a totally abstract class rather than an interface. 

 - All Known Subinterfaces , All Known Implementing Classes: java api 페이지 참고


* http://helloworld.naver.com/helloworld/textyle/831311 이 페이지를 참고하는 것도 좋겠다.

(hashmap과 hashtable 비교 설명 부분)










'IT' 카테고리의 다른 글

Wildcard SSL 인증서 설치 작업 기록  (0) 2015.03.12
HTTP Keep-Alive  (0) 2015.03.06
URL 에서의 #! (hash-bang)  (0) 2015.02.11
Comments