Sobes.tech
Junior — Middle

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");