18. april 2009 - 15:17Der er
13 kommentarer og 1 løsning
ArrayList vs Array
Jeg sidder og programmer en bot, hvor performce skal være helt i top. Jeg ved forskllen på en arraylist og en array er at array har en fast size, og det har arraylist ikke. Der er også en forskel på at man kan bruge Contians i en arraylist, hvilket man ikke har mulighed for i en array (Ret mig hvis jeg tager fejl).
Som udgangs punkt så ved jeg altid hvor meget stor sizen skal være på arrayet.
Men ud fra disse ting kunne jeg godt tænke mig at vide hvilken der har den højeste performce, når det bare gælder at gemme og læse indhold. - Hvad jeg har læst mig til skulle det være Array som har den højeste perfomce, hvad det angår.
Men.. Nu har jeg også brug for at tjekke om arrayet indeholder noget bestemt, hvilket vil sige jeg bliver nød til at while arrayet igennem og tjekke om inholdet er der, og ved arraylist kan jeg lave .Contains() - Hvilken vil være hurtigst?
Håber i forstår og kan hjælpe :) - Jeg er selvfølgelig godt klar over at der skal en stor mængde data til før forskellen bliver "synlig"
"bliver nød til at while arrayet igennem" ... uden at vide hvad du ellers skal, så kunne du overveje (også) at smide det i fx en hashtabel, hvor du får svaret om den er eller ikke er i lineær tid. Om det så kan betale sig i dit tilfælde, ved jeg ikke.
Hmm Arne_v, ved du hvor meget data der skal til før forskellen vil være der? Bare sådan ca.
Ved du om .Contains() i ArrayList, vil være lige så hurtig som at lave dette i et array: for(int i = 0;i < array.lengh;i++) { if (array[i] == "Data") { Data findes } } Hvis det er tilfældet, kan man ligeså godt bruge almideligt array, men hvis funktionen ".Contains()" er hurtige når det glæder at tjekke indholdet vil det jo være smarter i mit tilfælde at bruge ArrayList?
Erik, Nej det kan ikke rigtig betale sig, for det enste den vil blive brugt til er bare at tjekke om det findes. Så kan arraylist bruges istedet. :)
Hmm Erik, når du siger konstant tid. Mener du så at forskellen på at tjekke noget i en hasthable varier ikke efter hvor stor den er, vil altid tage lige "langtid"?
Ja, det tager (næsten) samme tid, uanset hvor stor den er. Til gengæld kan det tage længere tid at ændre indholdet. Men hvis man spø'r tit, og ændrer sjældent, kan det sikkert betale sig.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.