Atšķirība starp Array un ArrayList

Kas ir Array un ArrayList?

Gan Array, gan ArrayList ir uz indeksu balstītas datu struktūras, kuras bieži izmanto Java programmās. Konceptuālā izteiksmē ArrayList iekšēji atbalsta masīvi, tomēr, lai kļūtu par lielisku Java izstrādātāju, ir jāsaprot atšķirība starp abiem. Tas ir diezgan pamata solis, ar kuru jāsāk, īpaši iesācējiem, kuri tikko sākuši kodēšanu. Lai gan abus izmanto elementu glabāšanai Java, kas var būt gan primitīvi, gan objekti, tiem ir diezgan liela atšķirība funkcionalitātes un veiktspējas ziņā. Galvenā atšķirība starp abām ir tāda, ka Array ir statisks, turpretim ArrayList ir dinamisks raksturs. Šajā rakstā abi ir salīdzināti dažādos aspektos, lai jūs varētu izvēlēties vienu no otra.

Atšķirība starp Array un Arraylist

  1. Maināms

Viena no galvenajām un pamanāmajām atšķirībām starp abām datu struktūrām ir tāda, ka Array ir nemainīgs raksturs, kas nozīmē, ka tas ir fiksēta garuma datu tips, savukārt ArrayList ir dinamisks raksturs, kas nozīmē, ka tā ir mainīga garuma datu struktūra. Tehniskā ziņā masīva garumu nevar mainīt vai modificēt, tiklīdz ir izveidots masīva objekts. Tajā ir viena un tā paša datu veida elementu secīga kolekcija. Java masīvi darbojas savādāk, nekā tie darbojas C / C ++. ArrayList, no otras puses, var mainīt savu izmēru, un masīvi var augt pēc nepieciešamības. Tā kā tā ir dinamiska datu struktūra, elementus var pievienot un noņemt no saraksta.

  1. Generics

Java nevar izveidot saskarņu vispārīgo klašu masīvus, tāpēc masīvi un vispārējie medikamenti neiet roku rokā, padarot neiespējamu vispārējā masīva izveidi viena pamata iemesla dēļ, ka masīvi ir kovariācijas, savukārt ģenēriskās zāles ir nemainīgas. Kamēr Masīvs ir noteikta garuma datu struktūra, tajā ir tās pašas klases objekti vai noteikta datu tipa primitīvi. Tātad, ja, izveidojot Array objektu, jūs mēģināt saglabāt citu datu tipu, nevis norādīto, tas vienkārši izmet “ArrayStoreException”. ArrayList, no otras puses, atbalsta Generics, lai nodrošinātu tipa drošību.

  1. Primitīvas

ArrayList nav atļauti primitīvi datu tipi, piemēram, int, dubultā, garā un char. Tas drīzāk satur objektus, un primitīvas netiek uzskatītas par objektiem Java. Masīvi, no otras puses, var saturēt primitīvus, kā arī objektus Java, jo tā ir viena no visefektīvākajām datu struktūrām Java objektiem. Tas ir apkopots datu tips, kas paredzēts tādu objektu turēšanai, kuri var būt gan viena, gan cita veida.

  1. Garums

Lai iegūtu masīva garumu, kodam ir jāpiekļūst garuma atribūtam, jo, lai operācijas veiktu ar masīvu, ir jāzina garums. Lai gan ArrayList izmanto lieluma () metodi, lai noteiktu ArrayList lielumu, tā drīzāk atšķiras no masīva garuma noteikšanas. Metodes lielums () nosaka elementu skaitu ArrayList, kas savukārt ir ArrayList ietilpība.

Piemēram:

sabiedrības klase ArrayLengthTest

public static void main (stīgas [] args)

ArrayList arrList = jauns ArrayList ();

Stīgu [] priekšmeti = “viens”, “divi”, “trīs”;

priekš (virkne str: preces)

arrList.add (str);

int lielums = priekšmeti.izmērs ();

System.out.println (izmērs);

  1. Īstenošana

Masīvs ir Java pamatprogrammēšanas komponents, kas tiek izveidots dinamiski un elementu turēšanai izmanto piešķiršanas operatoru, savukārt elementu ievietošanai ArrayList izmanto atribūtu add (). ArrayList ir Java kolekcijas ietvara klase, kas izmanto noteiktu metožu kopu, lai piekļūtu un modificētu elementus. ArrayList lielumu var dinamiski palielināt vai samazināt. Masīva elementi tiek glabāti blakus esošajā atmiņas vietā, un tā izmērs visā laikā paliek nemainīgs.

  1. Performance

Kaut arī abas datu struktūras nodrošina līdzīgu veiktspēju, jo ArrayList atbalsta Arrays, vienai ir maza priekšrocība pār otru, galvenokārt attiecībā uz CPU laiku un atmiņas izmantošanu. Pieņemsim, ka, ja jūs zināt masīva lielumu, jūs, iespējams, apmeklēsit ArrayList. Tomēr iterācija virs masīva ir nedaudz ātrāka nekā iterācija ar ArrayList. Ja programmā ir iesaistīts liels skaits primitīvu, masīvs gan laika, gan atmiņas ziņā darbosies ievērojami labāk nekā ArrayList. Masīvi ir zema līmeņa programmēšanas valoda, ko var izmantot kolekcijas ieviešanā. Tomēr veiktspēja var atšķirties atkarībā no veiktās operācijas.

Masīvs Vs. Arrailists

Masīvs ArrayList
Masīvs ir fiksēta garuma datu struktūra, kuras garumu nevar mainīt pēc masīva objekta izveidošanas. ArrayList ir dinamisks raksturs, kas nozīmē, ka tas var mainīt savu izmēru, lai vajadzības gadījumā to palielinātu.
Masīva lielums visā programmā paliek nemainīgs. ArrayList lielums var dinamiski augt atkarībā no slodzes un ietilpības.
Elementu uzglabāšanai tas izmanto piešķiršanas operatoru. Elementu ievietošanai tas izmanto atribūtu add ().
Tas var saturēt primitīvas, kā arī tāda paša vai cita veida datu objektus. Primitīvas nav atļautas ArrayList. Tajā var būt tikai objektu veidi.
Masīvi un Generics neiet roku rokā. ArrayList ir atļauts izmantot vispārīgus medikamentus.
Masīvi var būt daudzdimensionāli. ArrayList ir viendimensionāls.
Tas ir vietējais programmēšanas komponents, kurā elementi tiek glabāti blakus esošās atmiņas vietās. Tā ir klase no Java kolekciju sistēmas, kurā objekti nekad netiek glabāti blakus esošajās vietās.
Garuma mainīgo izmanto, lai noteiktu masīva garumu. ArrayList lieluma noteikšanai izmanto izmēru ().
Norādīto elementu vai objektu glabāšanai nepieciešams mazāk atmiņas nekā ArrayList. Objektu uzglabāšanai nepieciešams vairāk atmiņas nekā masīvs.
Atkārtot masīvu ir ātrāk nekā atkārtot ar ArrayList. Ierobežojot ArrayList, veiktspējas ziņā ir ievērojami lēnāks.

Kopsavilkums

Lai gan daži var domāt, ka masīvu ieviešana programmā var iegūt ātrāk nekā to pašu darīt ar ArrayLists vienkārša iemesla dēļ, ka masīvi ir zema līmeņa datu struktūra, veiktspēja var atšķirties atkarībā no tā, kādu darbību veicat. Nu, masīva garums ir fiksēts, turpretī ArrayList lielumu var dinamiski palielināt vai samazināt, tāpēc ArrayList funkcionalitātes ziņā ir nedaudz pāri masīvam. Tomēr, neskatoties uz atšķirībām, viņiem ir arī dažas līdzības. Abas ir Java indeksu datu struktūras, kas ļauj uzglabāt objektus, un tās abas atļauj nulles vērtības, kā arī dublikātus. Nu, ja jūs jau iepriekš zināt objektu lielumu, jums jāiet ar masīvu, un, ja neesat pārliecināts par izmēru, dodieties ar ArrayList.