Arrays vs Arraylists
Skikkings is die mees gebruikte datastruktuur om 'n versameling elemente te stoor. Die meeste programmeertale verskaf metodes om skikkings maklik te verklaar en toegang tot elemente in die skikkings te verkry. 'n Skikkinglys kan gesien word as 'n dinamiese skikking, wat in grootte kan groei. As gevolg van hierdie rede hoef die programmeerder nie die grootte van die skikkingslys te ken wanneer sy dit definieer nie.
Wat is skikkings?
Getoon in figuur 1, is 'n stukkie kode wat tipies gebruik word om waardes aan 'n skikking te verklaar en toe te ken. Figuur 2 beeld uit hoe 'n skikking in die geheue sal lyk.
int-waardes[5]; values[0]=100; values[1]=101; values[2]=102; values[3]=103; values[4]=104; |
Figuur 1: Kode om waardes aan 'n skikking te verklaar en toe te ken
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Figuur 2: Skikking gestoor in die geheue
Bo kode, definieer 'n skikking wat 5 heelgetalle kan stoor en hulle word verkry deur indekse 0 tot 4 te gebruik. Een belangrike eienskap van 'n skikking is dat die hele skikking as 'n enkele blok geheue toegewys word en elke element kry sy eie ruimte in die skikking. Sodra 'n skikking gedefinieer is, is die grootte daarvan vas. As jy dus nie seker is oor die grootte van die skikking tydens samestelling nie, sal jy 'n groot genoeg skikking moet definieer om in die veilige kant te wees. Maar die meeste van die kere gaan ons eintlik minder elemente gebruik as wat ons toegewys het. So 'n aansienlike hoeveelheid geheue word eintlik vermors. Aan die ander kant as die "groot genoeg skikking" nie eintlik groot genoeg is nie, sal die program ineenstort.
Wat is Arraylists?
'n Skikkinglys kan gesien word as 'n dinamiese skikking, wat in grootte kan groei. Skikkingslyste is dus ideaal om gebruik te word in situasies waarin jy nie weet wat die grootte van die elemente benodig word ten tyde van die verklaring nie. In Java kan skikkingslyste slegs voorwerpe hou, hulle kan nie primitiewe tipes direk hou nie (jy kan die primitiewe tipes binne 'n voorwerp plaas of die omhulklasse van die primitiewe tipes gebruik). Oor die algemeen word skikkingslyste voorsien van metodes om invoeging, uitvee en soek uit te voer. Tydskompleksiteit van toegang tot 'n element is o(1), terwyl invoeging en skrapping 'n tydkompleksiteit van o(n) het. In Java kan skikkingslyste deurgeloop word deur van elke lusse, iterators of bloot die indekse te gebruik.
Wat is die verskil tussen Skikkings en Arraylists
Selfs al is die skikkings en skikkinglyste soortgelyk in die sin dat beide van hulle gebruik word om versamelings van elemente te stoor, verskil hulle in hoe hulle gedefinieer word. Die grootte van die skikking moet gegee word wanneer 'n skikking gedefinieer word, maar jy kan 'n skikking definieer sonder om die werklike grootte te weet. Jy kan elemente by 'n skikkingslys voeg nadat dit gedefinieer is en dit is nie moontlik met skikkings nie. Maar in Java kan skikkings nie primitiewe tipes hou nie, maar skikkings kan gebruik word om primitiewe tipes te hou. Maar as jy 'n datastruktuur benodig wat die grootte daarvan kan verander, sal skikkinglys die beste keuse wees.