Junior — Middle
Kuo skiriasi HashMap ir Hashtable kolekcijos pagal įgyvendinimo būdą ir savybes?
sobes.tech AI
Atsakymas iš AI
HashMap ir Hashtable yra Map sąsajos įgyvendinimai Java kalboje, tačiau turi keletą skirtumų:
-
Sinchronizacija: Hashtable yra sinchronizuotas (tinkamas kelių gijų aplinkoje), todėl jis yra lėtesnis. HashMap nėra sinchronizuotas, todėl yra greitesnis, bet nesaugus kelių gijų prieigai be išorinės sinchronizacijos.
-
Null leidimas: HashMap leidžia vieną null raktą ir kelis null reikšmes. Hashtable neleidžia null raktų ir null reikšmių.
-
Paveldėjimas: Hashtable yra senesnė klasė, paveldi iš Dictionary, o HashMap paveldi iš AbstractMap.
-
Naudojimas: Šiuolaikinėse programose patartina naudoti HashMap, o jei reikalinga sinchronizacija — ConcurrentHashMap arba išorinė HashMap sinchronizacija.
HashMap naudojimo pavyzdys:
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
Integer reikšmė = map.get("key");