Junior — Middle
Meg tudná magyarázni a HashMap belső szerkezetét és működését Java nyelven?
sobes.tech MI
Válasz az MI-től
Java-ban a HashMap egy adatszerkezet kulcs-érték párok tárolására, gyors hozzáférést biztosítva a kulcs segítségével.
Belső szerkezet:
- A HashMap egy kádakból álló tömböt (bucket array) használ.
- A kulcs hashCode értéke alapján számítódik ki, amit aztán az array indexévé alakítanak.
- Minden kádba ugyanazzal az indexszel rendelkező elemeket általában láncolt listában vagy fában (Java 8-tól, ha sok ütközés van) tárolják.
Működés:
- Egy objektum beszúrásakor a kulcs hash-je alapján számítódik ki az index.
- Ha a kád üres, az elem oda kerül.
- Ha a kád foglalt, ellenőrzik a kulcsok egyenlőségét (equals), hogy frissítsék az értéket vagy hozzáadjanak egy újat.
- Kereséskor a kulcs hash-je alapján számítódik ki az index, majd végigiterálnak a kád elemein a találat érdekében.
Példa:
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
int value = map.get("apple"); // 5
Így a HashMap átlagosan O(1) hozzáférési időt biztosít, de sok ütközés esetén O(n)-re romolhat.