- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Érkezik a Huawei Band 11 és 11 Pro, mindent tudni az új karkötőkről
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Vivo X300 - kicsiben jobban megéri
- Apple iPhone 17 Pro Max – fennsík
- Milyen okostelefont vegyek?
- Xiaomi 12 - az izmos 12
- Xiaomi 15T Pro - a téma nincs lezárva
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Motorola Edge 60 Fusion - nem csak a forma időtálló
Új hozzászólás Aktív témák
-
Drizzt
nagyúr
válasz
bambano
#11597
üzenetére
Pedig tok egyszeru a dolog.
Van kiindulaskor valamennyi(n) darab bucket. A bucketek gyakorlatilag tombok. Tehat van egy n elemu tombod. Minden bucketben van egy linkelt lista, vagy valamilyen annak megfelelo struktura.
A hash fuggvenyen nem modositanak semmit, mivel azt Javaban a user-nek szokas megadnia(oke, altalaban a Lombok irja meg helyette, meg lehet hasznalni a default implementaciot is, de az lehet lassu bizonyos esetekben).Kereses kulcs alapjan:
- Meghivod a kulcsra a .hashCode metodust. Igy kapod az x erteket.
- Kiszamolod , hogy x mod n = z alapjan mi a z.
- A z. bucketet kikeresed(ez egy lepesben megvan).
- A z. bucket osszes elemen vegigiteralsz, s megnezed, hogy a kulcs equals-e az eppen iteralas alatt levo elemmel. Ha igen, akkor az ott szinten eltarolt erteket visszaadod.Mikor lesz ez az egesz lassu?
- Ha a hashCode ugy van megirva, hogy minden kulcs ugyanabba a bucketbe keruljon, vagy legalabbis a bucketek egy kis reszebe. Ilyenkor abban a bucketben egy hosszu lista lesz, ami miatt nem o(1) lesz a lookup, hanem kozeliti az o(n)-et.
Ugyanez akkor is igaz lenne, ha a map-ben levo elemek szama joval nagyobb lenne, mint n. Mit csinal ez ellen a Java? Figyel egy toltottsegi szintet. Ha a toltottsegi szinte egy hataron tul van, akkor fogja, s csinal 2*n uj bucketet, s a meglevo elemeket belerakja, a regi n bucketet meg eldobja.Ebbe a pogramozo is bele tud szolni, van olyan konstruktor, amiben meg tudod adni a kezdeti n-t, s a toltottsegi tenyezot. Szoval ha tudod, hogy rohadt sok elemet fogsz belepakolni, akkor rogton csinalhatsz egy HashMap-et jo nagy n ertekkel, s akkor meguszol par rehash-t. Alapbol 16 bucket lesz, amit akkor ujrahashel, ha legalabb 13-ra no a size. Ekkor 32 bucket lesz, majd ha size legalabb 25 lesz, akkor ujrahashel 64 bucketbe, stb.
A LinkedHashMap az egy specibb valtozat, ahol az egesz HashMap-en tul egy LinkedList is fenn van tartva, ami az osszes elemet tartalmazza a hozzaadas sorrendjeben. Akkor kell hasznalni, ha fontos a hozzaadas sorrendjet tudni.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Villanyszerelés
- Home server / házi szerver építése
- Cyberpunk 2077
- Gitáros topic
- Luck Dragon: Asszociációs játék. :)
- Autós topik
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Samsung Galaxy Felhasználók OFF topicja
- Érkezik a Huawei Band 11 és 11 Pro, mindent tudni az új karkötőkről
- Nintendo Switch 2
- További aktív témák...
- Samsung Galaxy S25 FE 8/256GB - ÚJSZERŰ, Kártyafüggetlen - 1 Év Garanciával
- Ryzen 7 7800X3D +hűtött VRM-es B650M lap +32GB DDR5 RAM! GAR/SZÁMLA (a Te nevedre kiállítva)!
- Apple iPhone 13 Pro Max 256GB - ÚJSZERŰ, Kártyafüggetlen, Ezüst - 1 Év Garanciával
- Apple iPhone 16 Pro Max 256GB - Kártyafüggetlen, Sivatagszín - 1 Év Garanciával
- Nvidia Quadro és AMD FirePro kártyák - számla, 6 hó gar.
- AKCIÓ! MSI ThinA15 B7VF-449XHU Gamer notebook - R7 7735HS 16GB DDR5 1TB SSD nVidia RTX 4060 8GB
- GYÖNYÖRŰ iPhone 13 Pro 128GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS4675, 100% AKKSI
- Xbox Series X /// Számla + Garancia
- Hp USB-C/Thunderbolt 3 dokkolók: USB-C Universal, G2, G4, G5, Hp Elite/Zbook- Thunderbolt 4 G4
- Akció! Gamer PC-Számítógép! Intel Ultra 5 245K / RTX 3080 10GB / 16GB DDR5 / 1TB SSD!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

