"How about a little training para sa utak mo? Sana nasa working order pa."

"Kanina, sa talahanayan ng mga container at koleksyon nakita mo na ang parehong interface ay maaaring magkaroon ng maraming pagpapatupad. Sasabihin ko na ngayon sa iyo kung bakit namin kailangan iyon. At kung paano naiiba ang ArrayList sa LinkedList ."

"Ang bagay ay, ang mga koleksyon ay maaaring ipatupad sa iba't ibang paraan at walang pagpapatupad na palaging perpekto. Sa isang diskarte, ang ilang mga operasyon ay mabilis, ngunit ang iba ay mabagal. Ang kabaligtaran ay maaaring totoo para sa isa pang diskarte. Walang perpektong isang sukat- solusyon sa lahat."

"Iyon ang dahilan kung bakit ginawa ang desisyon na magpatupad ng ilang bersyon ng parehong koleksyon. Ang bawat pagpapatupad ay dapat na ma-optimize para sa ilang makitid na hanay ng mga operasyon. Ganito ang naging iba't ibang mga koleksyon. Pag-aralan natin ang dalawang klase bilang mga halimbawa: ArrayList at LinkedList ."

ArrayList kumpara sa LinkedList - 1

"Sa panloob, ang ArrayList ay ipinapatupad bilang isang ordinaryong array . Kaya't ang pagpasok ng isang elemento sa gitna ay nangangailangan na una nating ilipat ang lahat ng mga susunod na elemento ng isa, at pagkatapos ay ilagay ang bagong elemento sa libreng slot. Pagkuha at pagtatakda ng mga elemento (kunin, itakda ) ay mabilis , dahil tinutugunan lamang ng mga operasyong ito ang nauugnay na elemento ng array."

" Ang LinkList ay may ibang panloob na istraktura. Ito ay ipinatupad bilang isang listahan na may magkakaugnay na mga elemento : isang hanay ng mga natatanging elemento, na ang bawat isa ay nag-iimbak ng mga sanggunian sa susunod at nakaraang mga elemento sa listahan. Upang magpasok ng isang elemento sa gitna ng naturang listahan, kailangan mo lamang baguhin ang mga sanggunian ng mga kapitbahay nito sa hinaharap. Gayunpaman, upang makakuha ng elemento No. 130, kailangan mong patakbuhin ang bawat bagay mula 0 hanggang 130. Sa madaling salita, ang pagkuha at itakda ang mga operasyon ay magiging mabagal . Tingnan ang sumusunod na talahanayan :"

Paglalarawan Operasyon ArrayList LinkedList
Kumuha ng elemento makuha Mabilis Mabagal
Magtakda ng elemento itakda Mabilis Mabagal
Magdagdag ng elemento (sa dulo ng listahan) idagdag Mabilis Mabilis
Magpasok ng isang elemento (sa isang arbitrary na posisyon) magdagdag (i, halaga) Mabagal Mabilis
Alisin ang isang elemento tanggalin Mabagal Mabilis

"I see. I'm starting to understand it now. Mayroon bang anumang pamantayan o panuntunan na makakatulong sa akin na malaman kung aling koleksyon ang pinakamahusay sa isang partikular na sitwasyon?"

"Upang mapanatiling simple, ibibigay ko sa iyo ang sumusunod na panuntunan: kung madalas kang maglalagay (o mag-aalis) ng mga elemento sa gitna ng koleksyon, mas mabuting gamitin ang LinkedList . Sa lahat ng iba pang sitwasyon, mas gumagana ang ArrayList . "

"We'll delve in how they are structured in more advanced lessons, but for now we will just practice using them."