Oc mensi znalosti o to vic sebevedomi (a prispevku).
A ačkoliv nejsem nerd natoli, abych se hrabal v mechanismu vyhledávání prvku v hashmapě podle klíče, a kvůli tobě to dělat nebudu, pochybuju, že v hash tabulce se hledá sekvenčně.
Schvalne jsem si to rozklikl a HashMap v Jave opravdu pouziva separatni retezeni, tj. sekvencni pruchod ala spojovy seznam. Jeste se casto pouziva otevrene adresovani, ale tam ti algoritmy typu divide et impera jsou prd platne.
Nápodobně.
Tady to máš komplet, musel jsem si tu blbost kvůli vám číst:
https://www.geeksforgeeks.org/internal-working-of-hashmap-java/1. V Javě se spojový seznam používá jen do určité míry, než dojde k rehashování:
Time complexity is almost constant for put and get method until rehashing is not done.
2. Implementace v Javě nepoužívá rozděl a panuj (je to uděláno tak, že není potřebný), ale hash je přesně jak jsem řekl setřízen podle velikosti do pole, přičemž každý index toho pole představuje zminimalizovaný hash, to umožňuje rovnou skočit na spravný prvek pole při hledání. Tzn. hash o velikosti int je na začátku HashMapy zredukován do čísla 0-15. Tím dochází při vkládání k duplicitám a ty jsou řešený použitím seznamu, ale jen do určitého bodu, než dojde k přeuspořádání pole, viz bod 1
3. Pořád jste nikdo nevyvrátili to, co tady celou dobu tvrdím: ten kluk se ptá na stromy a datové struktury v Javě a
nikdo jste mu, kromě mě, nevysvětlili, proč v 99.9% případů bude používat když už tak HashMapu a ne nějaké stromy. A ještě tu ze mě budete dělat blbce.