1. Paano ArrayList
nakabalangkas
ArrayList
ay ang klase ng Java na pinakakaraniwang ginagamit para sa pag-iimbak ng mga elemento. Kaya paano ArrayList
gumagana at bakit ang lahat ay gusto ito nang labis?
Ang istraktura ng ArrayList
ay simple at mapanlikha. Ang bawat ArrayList
bagay ay naglalaman ng dalawang patlang:
- Isang hanay ng mga elemento
- Isang
size
variable, na nag-iimbak ng bilang ng mga elemento sa listahan
Sa panloob, ang isang ArrayList
bagay ay naglalaman ng isang pinakakaraniwang hanay! Ngunit hindi lang iyon. Mayroon ding variable ng laki , na nag-iimbak ng haba ng listahan. Ito ay kung paano ito gumagana:
Sa una, ang haba ng array sa loob ng listahan ay 10. At ang size
variable ay 0.
Kung magdaragdag ka ng elemento sa listahan, ito ay maiimbak sa ika-0 na cell ng array, at size
tataas sa 1.
Kung magdadagdag ka ng isa pang elemento, maiimbak ito sa 1st cell, at size
tataas muli ng 1 at magiging katumbas ng dalawa.
Kung nagdagdag ka ng isa pang elemento kapag wala nang espasyo sa array, ang mga sumusunod ay mangyayari sa add()
pamamaraan:
- Ang isang bagong array ay nilikha na isa at kalahating beses ang haba ng nauna
- Ang lahat ng mga elemento ng lumang array ay kinopya sa bagong array.
- Sa
ArrayList
object, pinapalitan ng reference sa bagong array ang reference sa luma . - Ang naipasa na elemento ay nai-save sa ika-10 cell ng bagong array.
- Ang laki ng variable ay tumataas ng 1 at ngayon ay magiging katumbas ng 11
May katulad na nangyayari kapag nagdaragdag (naglalagay) ng elemento sa gitna ng listahan. Ang mga umiiral na elemento ay inililipat ng 1 sa kanan, at ang naipasa na elemento ay isinusulat sa bagong laya na cell ng array.
Ngayon ay isasaalang-alang natin ang pinakapangunahing mga sitwasyong kinasasangkutan ng mga listahan:
2. Pagdaragdag ng isang elemento sa isangArrayList
Tingnan natin kung ano ang mangyayari sa loob ng listahan kapag idinagdag ang mga elemento dito. Kaagad pagkatapos malikha ang isang ArrayList object, mayroon kaming ganito sa memorya:
Mayroon kaming isang ArrayList
bagay na naglalaman ng dalawang field (dalawang variable): isang lalagyan (ang data
array) at ang bilang ng mga nakaimbak na elemento ( size
). Ang data
variable ay nag-iimbak ng isang reference sa isang lalagyan (array) na maaaring mag-imbak ng 10 elemento.
Kung magpasya kaming idagdag ang numero 5 sa array, makuha namin ang sumusunod na larawan:
Iniimbak na ngayon ng array ang elemento 5, at size == 1
.
Kung may tumawag sa size()
paraan sa aming ArrayList
object ngayon, ang return value ay ang bilang ng mga elementong nakaimbak sa listahan: 1. Ang bilang ng mga elemento sa listahan ay hindi pareho sa kapasidad ng storage ng array.
Ni ang kasalukuyang kapasidad ng imbakan o ang array mismo ay hindi maa-access (nakikita) sa labas ng ArrayList
bagay. Ito ay at palaging magiging ArrayList
panloob na data ng 's.
Magdagdag tayo ng 7 pang numero sa listahan: 10, 20, 30, 40, 50, 60, 70.
Ngayon ang memorya ay magiging ganito:
Kung tatawagan mo ang size()
pamamaraan ngayon, ibabalik nito ang numero 8, na siyang bagong bilang ng mga elemento sa listahan. Ang halagang ito ay walang kinalaman sa laki ng panloob na hanay.
Mayroong isang sobrang pagpapasimple sa larawang ito.
Ang ArrayList
klase ay hindi maaaring mag-imbak ng mga primitive na uri, kaya ginagamit nito ang Integer
uri sa halip na int
. Hindi direktang iniimbak ng container ang mga value na {5, 10, 20, 30, 40, 50, 60, 70}, ngunit sa halip ay mga reference sa mga Integer
bagay. Lahat ng walang laman na cell sa container store null
.
3. Pagtaas ng haba ng isang listahan
Tingnan natin kung ano ang nangyayari sa loob ng isang listahan kapag wala nang mga walang laman na cell sa panloob na hanay nito.
Ipagpalagay na mayroon kaming isang listahan ng 10 elemento:
Nagpasya kaming idagdag ang numerong 100 dito. Ito ang nangyayari sa add()
pamamaraan:
Hakbang 1 — Gumawa ng bagong array:
Hakbang 2 — Kopyahin ang lahat ng elemento mula sa lumang array hanggang sa bago:
Hakbang 3 — Palitan ang lumang array (baguhin ang reference sa ArrayList
panloob na array ng object):
Hakbang 4 — Idagdag ang bagong numero, na siyang pinaghirapan naming gawin:
GO TO FULL VERSION