2008-11-06 4 views
45

Jaka jest różnica między mapą skrótu a słownikiem ADT. A kiedy preferować jeden nad drugim. Dla mojego zadania programistycznego mój instruktor poprosił o skorzystanie z jednego z nich, ale nie widzę żadnej różnicy między nimi. Program ma działać z ogromnym nie. strun. Jakieś sugestie?Różnica między HashMap a słownikiem ADT

Odpowiedz

46

Pod względem Java, zarówno klasa HashMap a klasa Dictionaryimplementacje z „Mapy” abstrakcyjny typ danych. Abstrakcyjne typy danych nie są specyficzne dla żadnego z języków programowania, a Map ADT może być również znany jako Hash, Słownik lub Tablica asocjacyjna (inne w http://en.wikipedia.org/wiki/Associative_array). (Zauważ, że robimy rozróżnienia między klasą Dictionary i Dictionary ADT).

Dictionaryklasa został oznaczony jako przestarzały, więc najlepiej nie używać.

+6

Należy zauważyć, że istnieje różnica między abstrakcyjnym typem danych "Mapa" a interfejsem Java "Mapa". Jak wspomniano w innych odpowiedziach, starsza klasa 'Dictionary' nie _nie implementuje interfejsu Java' Map', ale ma klasę 'HashMap'. –

7

W Javie HashMap implementuje interfejs mapy, podczas gdy słownik nie. To sprawia, że ​​słownik staje się przestarzały (zgodnie z dokumentami API). Oznacza to, że obie spełniają podobną funkcję, więc masz rację, że wydają się bardzo podobne ... HashMap jest rodzajem słownika.

Zaleca się jednak korzystanie z mapy HashMap.

13

to przepełnienie stosu poczta ma dobrą pracę wyjaśniającą podstawowe różnice:

Java hashmap vs hashtable

Zauważ, że Hashtable jest po prostu implementacja słownika ADT. Należy również pamiętać, że Java uważa Słownik "obsolete".

Fakt, że HashTable jest zsynchronizowany, niewiele kosztuje dla większości zastosowań. Użyj HashMap.

+0

Dziękujemy! To jest pomocne! – trillions

0

Mapa jest interfejsem dla ADT w Javie, taką samą ogólną strukturę danych niezależny od języka dla utrzymania < klucz, wartość > pary i wprowadza w Javie 1.2.

Słownik (nie jest implementacją mapy) to klasa abstrakcyjna dla tego samego celu wprowadzona wcześniej w JDK 1.0. Jedyną podklasą jest Hashtable, która sama implementuje Mapę. Niemniej jednak, klasa Dictionary jest teraz przestarzała i możesz ją zapomnieć.

Istnieją różnice między członkami funkcyjnymi mapy i słownika, jednak może się okazać, że różnica między HashMap i HashTable jest bardziej użyteczna. here możesz znaleźć różnice.