Czym różnią się kolekcje HashMap i Hashtable pod względem sposobu implementacji i cech?
sobes.tech AI
Odpowiedź od AI
HashMap i Hashtable to implementacje interfejsu Map w Javie, ale mają kilka różnic:
-
Synchronizacja: Hashtable jest zsynchronizowany (bezpieczny dla wątków), co czyni go wolniejszym w środowisku wielowątkowym. HashMap nie jest zsynchronizowany, więc jest szybszy, ale niebezpieczny dla dostępu wielowątkowego bez zewnętrznej synchronizacji.
-
Obsługa null: HashMap pozwala na użycie jednego null-klucza i wielu null-wartości. Hashtable nie dopuszcza null-kluczy ani null-wartości.
-
Dziedziczenie: Hashtable jest starszą klasą, dziedziczy z Dictionary, a HashMap z AbstractMap.
-
Użycie: W nowoczesnych aplikacjach lepiej używać HashMap, a w razie potrzeby synchronizacji — ConcurrentHashMap lub zewnętrznej synchronizacji HashMap.
Przykład użycia HashMap:
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
Integer value = map.get("key");