Arrays vs Arraylists
Ang Array ay ang pinakakaraniwang ginagamit na istraktura ng data upang mag-imbak ng koleksyon ng mga elemento. Karamihan sa mga programming language ay nagbibigay ng mga paraan upang madaling magdeklara ng mga array at ma-access ang mga elemento sa mga array. Ang isang arraylist ay makikita bilang isang dynamic na array, na maaaring lumaki sa laki. Dahil dito, hindi kailangang malaman ng programmer ang laki ng arraylist kapag tinukoy niya ito.
Ano ang Arrays?
Ipinapakita sa figure 1, ay isang piraso ng code na karaniwang ginagamit upang magdeklara at magtalaga ng mga value sa isang array. Ang Figure 2 ay naglalarawan kung ano ang magiging hitsura ng isang array sa memorya.
int values[5]; values[0]=100; values[1]=101; values[2]=102; values[3]=103; values[4]=104; |
Figure 1: Code para sa pagdedeklara at pagtatalaga ng mga value sa isang array
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figure 2: Array na nakaimbak sa memory
Sa itaas ng code, tumutukoy sa isang array na maaaring mag-imbak ng 5 integer at ina-access ang mga ito gamit ang mga indeks na 0 hanggang 4. Ang isang mahalagang katangian ng isang array ay na, ang buong array ay inilalaan bilang isang bloke ng memorya at ang bawat elemento ay nakakakuha nito sariling espasyo sa array. Kapag natukoy na ang isang array, naayos na ang laki nito. Kaya't kung hindi ka sigurado tungkol sa laki ng array sa oras ng pag-compile, kailangan mong tukuyin ang isang sapat na malaking array upang maging ligtas na bahagi. Ngunit, sa karamihan ng mga pagkakataon, talagang gagamit tayo ng mas kaunting bilang ng mga elemento kaysa sa inilaan natin. Kaya ang isang malaking halaga ng memorya ay talagang nasayang. Sa kabilang banda, kung ang “large enough array” ay hindi talaga sapat na laki, ang program ay mag-crash.
Ano ang Arraylists?
Ang isang arraylist ay makikita bilang isang dynamic na array, na maaaring lumaki sa laki. Samakatuwid ang mga arraylist ay mainam na gamitin sa sitwasyon kung saan hindi mo alam ang laki ng mga elemento na kinakailangan sa oras ng deklarasyon. Sa Java, ang mga arraylist ay maaari lamang humawak ng mga bagay, hindi sila maaaring direktang humawak ng mga primitive na uri (maaari mong ilagay ang mga primitive na uri sa loob ng isang bagay o gamitin ang mga klase ng wrapper ng mga primitive na uri). Sa pangkalahatan, ang mga arraylist ay binibigyan ng mga pamamaraan upang maisagawa ang pagpasok, pagtanggal at paghahanap. Ang pagiging kumplikado ng oras ng pag-access sa isang elemento ay o(1), habang ang pagpasok at pagtanggal ay may kumplikadong oras ng o(n). Sa Java, maaaring i-traverse ang mga arraylist gamit ang foreach loops, iterator o gamit lang ang mga index.
Ano ang pagkakaiba ng Array at Arraylist
Kahit na magkapareho ang mga array at arraylist sa kahulugan na pareho ang mga ito ay ginagamit upang mag-imbak ng mga koleksyon ng mga elemento, naiiba ang mga ito sa kung paano tinukoy ang mga ito. Ang laki ng array ay kailangang ibigay kapag ang isang array ay tinukoy, ngunit maaari mong tukuyin ang isang arraylist nang hindi alam ang aktwal na laki. Maaari kang magdagdag ng mga elemento sa isang arraylist pagkatapos itong matukoy at hindi ito posible sa mga array. Ngunit sa Java, ang mga arraylist ay hindi maaaring magkaroon ng mga primitive na uri, ngunit ang mga array ay maaaring gamitin upang magkaroon ng mga primitive na uri. Ngunit kung kailangan mo ng istraktura ng data na maaaring mag-iba-iba ang laki nito, ang arraylist ang pinakamahusay na pagpipilian.