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
Pod względem Java, zarówno klasa HashMap
a klasa Dictionary
są implementacje 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).
Dictionary
klasa został oznaczony jako przestarzały, więc najlepiej nie używać.
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.
to przepełnienie stosu poczta ma dobrą pracę wyjaśniającą podstawowe różnice:
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.
Dziękujemy! To jest pomocne! – trillions
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.
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'. –