Listában ABC szerinti kereséssel kapcsolatos kérdés ( JAVA a prog.nyelv)?
van egy rohadt nagy lista, kb 30k elem van benne. Eleve ABC rendre vannak már rendezve. Ebben szeretnék keresgélni. Ahhoz,hogy ne az egész listán kelljen minden keresésnél végigmenni ezért először megkerestem,hogy egy adott kezdőbetű hol található a 30k -s listában. Van benne egy rakás string ami azonos betűvel kezdődik. Így ha legközelebb keresem mondjuk a cica szót akkor nem a teljes 30k elemen kell végigmenni,hanem csak a 125-325 elemeken mivel azok kezdődnek c betűvel.
Ha egy keresett szó első betűje c akkor a startindex = 125 endindex = 325 lesz. Viszont így minden egyes betűre külön külön meg kell adni ,hogy a listában milyen indexen található a start és end pozíció. A kész kód otthon van én meg munkában vagyok,de ha így sem tiszta ebédidőben reprodukálom.
Ilyesmire való a HashMap, azzal egy objektummal tudsz indexelni egy másik objektumot. Tehát beolvasod a listát, minden "a" betűvel kezdődő elemet beleteszel egy tömbbe, vagy ArrayList-be, vagy bármibe, ami szekvenciálisan tárol dolgokat, majd ha minden "a" betűs dolog megvan, akkor ezt a csomagot beleteszed a HashMap-be, úgy, hogy az index "a" legyen (igye: HashMap.put("a", tomb) ). Ezt eljátszod minden kezdőbetűvel, és innentől kezdve, ha keresni akarsz, akkor csak kiszeded a HashMap-ből a megfelelő betű által indexelt tömböt, és azon mész végig.
Megjegyezném, hogy ez nem a legjobb keresési mód, ha eleve rendezve van a tömb, akkor a "divide and conquer" kereséssel sokkal optimálisabban tudsz keresni a tömbben (és biztosan van még egy kazal algoritmus, csak most pont ez jutott eszembe).
"Viszont így minden egyes betűre külön külön meg kell adni ,hogy a listában milyen indexen található a start és end pozíció."
Minek? Elég a startpoz is.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!