Sobes.tech
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");