Citat:
Mikky: Eto pa ako neko ima neki komentar u vezi ovoga i eventualno da li sam negde pogresio u rezonovanju neka kaze.
Imas malu gresku u rezonovanju, kad radis performance test onda pravis idealne uslove za funkcionisanje te klase, znaci koristis broj iteracija za koji je siguran da nece zagusiti sistem. Ako guras na gore dok sistem izdrzi, onad se to zove stress testing i nije primenljivo u tvojoj diskusiji. Znaci raditi trilion iteracija i ubacivati int[100]. Btw, int[] je referenca (objekat tipa Array), tako ce Array List raditi isto ubacivao ti u njega int, int[100] ili int[100000], razlika je samo koliko ces ometanja u merenju imati od memorijskog podsistema u njegovim pokusajima da smesti sve tvoje nizove. To ti bas i ne govori o tome koliko je brz sam Array List, zar ne?
Dalje, ArrayList je definitivno brzi od HashTable, to si mogo i da pitas, nisi morao da se patis

Array list je baziran na obicnom Array-u samo dinamicki alocira velicinu niza (pocinje po defaultu od 4 elementa ako mu se drugacije ne kaze i duplira se po potrebi) i osigurava da su svi elementi reference.
Hash table sa druge strane za svaki element pravi kanticu (bucket) u koju ubaci hash kljuca (zato se i zove hash table), kljuc i vrednost, i onda ima kompleksnu logiku odrzavanja niza tih kantica kako bi elemnti mogli da se preuzimaju po kljucu. U tvom slucaju ubacivanje lementa u hashtable podrazumeva:
1) kreiranje hash-a za kljuc
2) provrava da li hash vec postoji u listi (zbog duplikata)
3) kreira bucket za tvoj element
4) provera da li je niz bucketa dovoljno velik i osigurava da postoji mesto i ubacuje lement (ovo je jedino sto array list radi)
Sve u svemu, nije bas brzo.
Citat:
radoica: Probaj klasu List<>
Trebalo bi da bude brza od ArrayList-a
Sto se tice funkcionisanja, ArrayList = List<Object>, nema vece razlike, isto koristi Array u pozadini, samo sto osigurava da elementi ne samo sto su reference, nego su i tipa T, sto olaksava programiranje dinamickih nizova i compile-time proveru.
Citat:
Mikky: Ako mi za svaki fajl prosecno treba oko 100bajtova memorije to je 100MB na milion fajlova, i niz od milion clanova. Kasnije bih trebao da taj niz sortiram (recimo po velicini).
Hash table u startu ispada iz kombinacije, kao prvo uopste nema sortiranje.
List<T> ili ArrayList mogu da prikupe sve tvoje objekte, ali racunaj na oko 120-130Mb za milion fajlova ako ti je fajl objekat oko 100 bajtova. problem ces imati sa brzinom disk sistema (kao sto ti je NrmMyth rekao) i definitivno sa sortiranjem tih milion objekata

Posto ces porediti polje iz objekta koje je u listi sa drugim takvim (u osnovnoj varijanti), na tvojoj masini ce sort na 5 miliona elemnata trajati oko 30-tak sekundi (poredeci tvoje rezultate sa mojima, pod uslovom da swap miruje

).
Ako ne koristis informacije o svih milion fajlova, mozda da razmislis o varijatni smestanja tih podataka u neku bazu i onda koriscenje SQL-a za filtriranje/sortiranje?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić