Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: Agglegénykonyha 14 – Kések, késélezés
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: MárkaLánc
- sziku69: Szólánc.
- bobalazs: i5 4690 + RX 460 HTPC
- Brogyi: CTEK akkumulátor töltő és másolatai
Ú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?:))
- Xiaomi 17 Ultra - jó az optikája
- Hivatalos a OnePlus 13 startdátuma
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- GL.iNet Flint 2 (GL-MT6000) router
- ASUS blog: 2K-tól a 4K-ig és tovább a Radeon RX 9000-es szériával
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Milyen egeret válasszak?
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- Manli RTX 3070 8GB LHR / Csavarmatricás / Beszámítás OK! / Akciós ár!
- Apple Watch 4 44mm szürke színben. 74% akkumulátor.
- Canon EF-S 24mm f/2.8 STM objektív
- Dell Inspiron 16 Plus 7640 Ultra 7 / RTX 4060 16gb DDR5 1TB SSD/2.5K 120Hz Garancia
- Canon 60D fényképezőgép + 50mm objektív + 16GB memóriakártya
- Samsung Galaxy S24 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPad mini 4 (A1538) 128GB Wi-Fi Asztroszürke
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- Apple iPhone 13 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo ThinkPad T14 Gen1 Ryzen5 4650U Refurbished - Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
