1. Mga lalagyan at koleksyon
Ang mga container o koleksyon ay mga klase na nagbibigay-daan sa iyong mag-imbak at magproseso ng ilang bagay nang sabay-sabay. Alam mo na ang dalawang uri ng mga lalagyan: mga array at listahan.
Ang Java ay may ilang dosenang mga koleksyon, ang bawat isa ay nag-iimbak ng mga elemento sa sarili nitong partikular na paraan. Narito ang ilan sa kanila:
Koleksyon | Klase | Paglalarawan |
---|---|---|
|
|
Listahan |
|
Naka-link na listahan | |
|
Vector | |
|
salansan | |
|
|
Itakda |
|
||
|
||
|
|
Nakapila |
|
||
|
|
Mapa/Diksyunaryo |
|
||
|
Medyo malabo ang mga pangalan dito. Sa karamihan ng mga programming language, ang lahat ng mga istruktura ng data na ito ay tinatawag na mga koleksyon, ngunit hindi sa Java. Sa Java, ang ilan sa mga klase na ito ay nagpapatupad ng Collection
interface, habang ang iba ay hindi.
Alinsunod dito, ang mga koleksyon ay nahahati sa mga koleksyon sa malawak na kahulugan at mga koleksyon sa makitid na kahulugan (lamang ang mga nagpapatupad ng Collection
interface).
Kaya't upang maiwasan ang pagkalito, kapag pinag-uusapan natin ang mga koleksyon ay ang ibig nating sabihin sa makitid na kahulugan ng salita, ibig sabihin, mga klase na nagpapatupad ng Collection
interface. Ang List
, Set
at Queue
mga uri ay lahat ng mga koleksyon. Ang mga koleksyon sa malawak na kahulugan ay karaniwang tinatawag na mga lalagyan . Kabilang dito ang mga uri ng like Map
at array.
2. HashSet
koleksyon
Ang HashSet
klase ay isang tipikal na hanay ng koleksyon. Sa maraming paraan, ito ay katulad ng ArrayList
klase. Sa ilang mga paraan, ito ay isang mas primitive na bersyon.
Maaari kang lumikha ng isang HashSet
bagay gamit ang isang pahayag tulad ng:
HashSet<Type> name = new HashSet<Type>();
Nasaan Type
ang uri ng mga elemento na aming iimbak sa HashSet
koleksyon.
Ang HashSet
klase ay may mga pamamaraan tulad nito:
Pamamaraan | Paglalarawan |
---|---|
|
Idinaragdag ang value elemento sa koleksyon |
|
Inaalis ang value elemento mula sa koleksyon. Ibinabalik true kung mayroong ganoong elemento |
|
Sinusuri kung may value elemento ang koleksyon |
|
Nililinis ang koleksyon, inaalis ang lahat ng elemento |
|
Ibinabalik ang bilang ng mga elemento sa koleksyon |
Narito ang isang halimbawa ng paggamit ng isang set.
Sumulat tayo ng isang programa na nagsasabi ng paalam sa gumagamit kung siya ay kumusta. Upang gawin itong mas kawili-wili, bibigyan namin ang aming programa ng kakayahang maunawaan ang "hello" sa maraming wika.
Code | Tandaan |
---|---|
|
Lumikha ng isang HashSet bagay na nag-iimbak String ng mga elemento. Nagdaragdag kami ng mga pagbati sa iba't ibang wika sa set variable. Magbasa ng isang linya mula sa console. Kung ang string ay nasa aming hanay ng mga pagbati, pagkatapos ay magpaalam kami. |
3. Itakda
Ang Set
koleksyon ay idinisenyo upang hawakan ang isang hanay ng mga elemento. Kaya nga tinatawag itong Set
(set). Ang koleksyon na ito ay may tatlong tampok.
Mga operasyon sa isang set
Tatlo lang ang magagawa mo sa isang set: magdagdag ng mga elemento sa set, mag-alis ng mga elemento mula sa set, at suriin kung naglalaman ang set ng isang partikular na elemento. Ayan yun.
Walang kaayusan
Ang mga elemento sa koleksyong ito ay walang mga indeks. Hindi ka makakakuha ng isang elemento sa pamamagitan ng isang index, o magsulat ng isang halaga sa isang koleksyon sa isang partikular na index. Ang isang set ay walang get()
at set()
mga pamamaraan.
Mga natatanging elemento
Ang lahat ng mga elemento sa isang set ay natatangi. Hindi tulad ng isang listahan, ang isang set ay maaaring maglaman lamang ng isang instance ng isang elemento. Ang isang bagay ay nasa set o wala — walang pangatlong opsyon. Hindi ka maaaring magdagdag ng itim ng tatlong beses sa isang hanay ng mga kulay. Nandiyan man o wala.
Paghahanap ng mga elemento
Kapag nagdagdag ka ng bagong elemento, mag-alis ng elemento, o tingnan kung mayroong elemento sa isang set, ang paghahanap para sa elemento ay isinasagawa sa pamamaraan. Ang naipasa na elemento ay inihambing sa mga elemento ng koleksyon muna sa pamamagitan ng hashCode()
, at pagkatapos ay kung ang mga halaga ay ibinalik ayon sa hashCode()
tugma, sa pamamagitan ng equals()
.
4. Paghahambing ng mga koleksyon: List
vsSet
Paghambingin natin ang dalawang uri ng mga koleksyon: List
at Set
Titingnan natin ang mga pangunahing pagkakaiba, kapag ang isa ay mas kapaki-pakinabang kaysa sa isa, at kabaliktaran.
Subukan nating ihambing ang Listahan at Itakda gamit ang mga laruan bilang isang halimbawa.
Ang List
(listahan) na koleksyon ay parang isang set ng mga laruan na nakaayos sa dingding sa isang playroom. Maaari kang magdagdag ng laruan sa dulo ng listahan. Kung talagang kailangan mo, maaari mo ring ipasok ito sa gitna (ngunit ang ilan sa mga umiiral na laruan ay kailangang ilipat).
Ang bawat laruan ay may index. Maaari kang sumangguni sa isang laruan sa pamamagitan ng index nito at palitan din ang laruang numero 7 ng laruang numero 13. Maaari mong alisin ang laruang numero 4 sa listahan. Sa wakas, maaari mong malaman ang index ng bawat laruan sa listahan.
Ang Set
(set) na koleksyon ay mas katulad ng isang tumpok ng mga laruan sa gitna ng sahig. Maaari kang magdagdag ng laruan sa pile, at maaari mong alisin ang isang laruan mula sa pile. Ngunit ang mga laruang ito ay walang nakapirming index na nauugnay sa kanila.
O ipagpalagay na pumipili ka ng laruan para sa kaarawan ng iyong anak. Una, isipin mo kung nasa kanya na ang laruan. Ang lahat ng mga laruan na mayroon na siya ay bumubuo ng isang set ng mga laruan na hindi mo pipiliing bilhin.
Mula sa puntong ito, makikita mo na ang pagkakasunud-sunod ng mga laruan sa isang set ng "mga laruan na umiiral na" ay hindi mahalaga, at hindi rin mahalaga kung ang batang may kaarawan ay may dalawang pagkakataon ng isang partikular na laruan. Hindi ka interesado sa pagkakasunud-sunod o numero ng bawat laruan. Ang mahalaga sa iyo ay ang pag-alam sa bawat natatanging laruan na umiiral sa set.
Para sa mga kasong tulad nito, kailangan mo ang Set
koleksyon. Ang pinakasikat na pagpapatupad nito ay ang HashSet
klase.