1. ArrayList
klase
Ngayon ay tuklasin natin ang ArrayList
klase. Ito ang una sa ilang klase na kilala bilang mga koleksyon . Sa Java, ang mga koleksyon ay napakalawak at kapaki-pakinabang na paksa na ang buong quest ng CodeGym ay nakatuon sa kanila.
Upang lubos na maunawaan kung paano nakaayos ang mga koleksyon at ang lahat ng kanilang mga nuances, kailangan mo munang matutunan ang OOP, mga interface, pamana, ang mga pangunahing kaalaman sa multithreading, at marami pang iba.
Kaya ngayon ay makikilala na lamang natin ang pinakasimpleng uri ng koleksyon. Ngunit sa isang malalim na antas upang maunawaan mo kung paano ito gamitin at kung paano ito gumagana. Ngayon, matugunan ang ArrayList
koleksyon .
Ang backstory
Magsisimula ako sa isang maliit na background. Talagang hindi nagustuhan ng mga programmer ang isang aspeto ng mga array: ang katotohanang hindi mababago ang kanilang laki. Paano kung kailangan mong mag-imbak ng tatlong higit pang mga elemento sa isang array, ngunit mayroon lamang isang walang laman na cell?
Ang tanging solusyon sa mga limitasyon sa espasyo ng isang array ay ang lumikha ng napakalaking array upang ma-accommodate ang lahat ng elementong maaaring kailanganin mong iimbak. Ngunit ito ay karaniwang isang pag-aaksaya ng memorya. Kung ang isang array ay karaniwang naglalaman ng dalawa o tatlong elemento ngunit mayroong kahit isang maliit na pagkakataon na kakailanganin itong mag-imbak ng 100 sa mga ito, kung gayon kinakailangan na lumikha ng isang array na may kapasidad na mag-imbak ng 100.
Kaya ano ang naisip ng mga programmer? Isinulat nila ang ArrayList
klase, na ginawa ang parehong gawain tulad ng Array
klase, ngunit nababago.
klase ng ArrayList
Ang pangalan ng ArrayList
klase ay nabuo mula sa dalawang salita: Array + List. Array
ay isang array at List
isang listahan.
Ang bawat ArrayList
bagay ay naglalaman ng isang ordinaryong hanay ng mga elemento. Kapag nagbasa ka ng mga elemento mula sa isang ArrayList
, kinukuha ng object ang mga ito mula sa panloob na hanay nito. Kapag nagsusulat ka ng mga elemento, isinusulat nito ang mga ito sa panloob na hanay.
Ang klase ng ArrayList ay kulang sa lahat ng mga disadvantages na mayroon ang mga array. Alam nito kung paano:
- Mag-imbak ng mga elemento ng isang partikular na uri
- Dynamically resize ang listahan
- Magdagdag ng mga elemento sa dulo ng listahan
- Maglagay ng mga elemento sa simula o gitna ng listahan
- Alisin ang mga elemento mula sa kahit saan sa listahan
Para sa higit pang mga detalye, tingnan sa ibaba:
2. Paglikha ng isang ArrayList
bagay
Upang lumikha ng isang ArrayList
bagay, kailangan mong magsulat ng code tulad nito:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Nasaan ArrayList
ang uri/klase ng koleksyon, TypeParameter
ang uri ng mga elementong nakaimbak sa ArrayList
koleksyon, at name
pangalan ng ArrayList<TypeParameter>
variable.
Ang name
variable ay may generic na uri. Binubuo ito ng dalawang uri: unang ipinahiwatig ang uri ng koleksyon, at pagkatapos ay ginagamit ang mga anggulong bracket upang ipahiwatig ang uri ng mga elementong nakaimbak sa koleksyon.
Mga halimbawa:
Code | Paglalarawan |
---|---|
|
Listahan ng mga integer |
|
Listahan ng mga string |
|
Listahan ng mga totoong numero |
Hindi tulad ng mga array, hindi maaaring mag-imbak ang mga koleksyon ng mga primitive na uri, mga uri lamang ng reference . Kaya kung kailangan mo ng koleksyon ng int
s, gamitin ang Integer
klase ng wrapper sa halip.
3. Mga operasyon na may isangArrayList
Sa una, ang haba ng bagong likhang listahan ay zero, dahil naglalaman ito ng 0 elemento. Kung magdaragdag ka ng isang elemento sa listahan, tataas ang haba nito ng 1. Kung aalisin mo ang idinagdag na elemento, ang haba ay bababa pabalik sa zero.
Ang sumusunod na talahanayan ay maaaring magturo sa iyo ng higit pa tungkol sa mga pamamaraan ng ArrayList
klase:
Paraan | Paglalarawan |
---|---|
|
Idinaragdag ang naipasa na elemento sa listahan |
|
Nagdaragdag ng elemento sa isang partikular na lokasyon sa listahan. |
|
Ibinabalik ang elemento kung saan ang index ayindex |
|
Nagtatalaga value sa elemento na ang index ayindex |
|
Tinatanggal ang elemento na ang index ay index . Ibinabalik ang inalis na elemento. |
|
Tinatanggal ang elementong ipinapasa mo sa pamamaraan. Kung mayroong higit sa isang elemento, ang una ay aalisin. |
|
Nililinis ang listahan, ibig sabihin, inaalis ang lahat ng elemento sa listahan. |
|
Sinusuri kung naglalaman ang listahan ng value . |
|
Sinusuri kung walang laman ang listahan o wala. Sa madaling salita, kung ang haba ng listahan ay zero. |
|
Ibinabalik ang laki ng listahan, ibig sabihin, ang bilang ng mga elemento sa listahan. |
|
Nagbabalik ng array na naglalaman ng mga elemento ng listahan. Kailangan mong ipasa ang array sa pamamaraan. |
Hinahayaan ka ng mga paraang ito na gawin ang halos anumang bagay na maaari mong gawin sa listahan: magpalit ng mga elemento, magdagdag ng mga elemento, at mag-alis ng mga elemento. Maaari mong i-clear ang listahan gamit ang isang command, o kahit na i-convert ang listahan sa isang array.
4. Paghahambing ng ArrayList
atArray
Sa palagay ko ay hindi natin maiiwasan ang paghahambing ArrayList
at isang array.
Mayroon lamang 4 na pagkilos na maaari mong gawin sa mga array:
- Gumawa ng array
- Kumuha ng isang elemento sa pamamagitan ng index
- Magtakda ng elemento sa pamamagitan ng index
- Kunin ang haba ng array
Narito ang mga operasyong ito habang nalalapat ang mga ito sa isang array at isang ArrayList
:
Array | ArrayList |
---|---|
|
|
|
|
|
|
|
|
Ihambing natin kung paano ArrayList
gumagana ang isang kumpara sa kung paano gumagana ang isang array. Halimbawa, ipatupad natin ang gawaing ito: "basahin ang 10 string mula sa keyboard at ipakita ang mga ito sa screen sa reverse order"
Gamit ang Array | Gamit ang ArrayList |
---|---|
|
|
Ang pagkakatulad ay malinaw. Ang lahat ay kahit papaano ay mas maikli at mas malinaw para sa mga array. Ngunit ArrayList
hindi rin mahirap: upang makakuha ng isang elemento, ginagamit namin ang get()
pamamaraan; upang baguhin ang isang elemento, ang set()
pamamaraan; upang makuha ang haba ng listahan, ang size()
pamamaraan.
Kaya bakit ginagamit ng mga programmer ang ArrayList
klase?
Ang buong punto, siyempre, ay ang lahat ng iba pang mga pamamaraan na wala sa mga ordinaryong array:
- Magdagdag ng elemento sa listahan
- Magdagdag ng elemento sa gitna ng listahan
- Maghanap ng isang elemento sa listahan
- Pag-alis ng elemento mula sa isang listahan