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
List
ArrayList
Listahan
LinkedList
Naka-link na listahan
Vector
Vector
Stack
salansan
Set
HashSet
Itakda
TreeSet
LinkedHashSet
Queue
PriorityQueue
Nakapila
ArrayQueue
Map
HashMap
Mapa/Diksyunaryo
TreeMap
HashTable

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 Collectioninterface, 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 Collectioninterface).

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 Collectioninterface. Ang List, Setat Queuemga 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 Mapat array.


2. HashSetkoleksyon

Ang HashSetklase ay isang tipikal na hanay ng koleksyon. Sa maraming paraan, ito ay katulad ng ArrayListklase. Sa ilang mga paraan, ito ay isang mas primitive na bersyon.

Maaari kang lumikha ng isang HashSetbagay gamit ang isang pahayag tulad ng:

HashSet<Type> name = new HashSet<Type>();

Nasaan Typeang uri ng mga elemento na aming iimbak sa HashSetkoleksyon.

Ang HashSetklase ay may mga pamamaraan tulad nito:

Pamamaraan Paglalarawan
void add(Type value)
Idinaragdag ang valueelemento sa koleksyon
boolean remove(Type value)
Inaalis ang valueelemento mula sa koleksyon.
Ibinabalik truekung mayroong ganoong elemento
boolean contains(Type value)
Sinusuri kung may valueelemento ang koleksyon
void clear()
Nililinis ang koleksyon, inaalis ang lahat ng elemento
int size()
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
HashSet<String> set = new HashSet<String>();

set.add("Hallo");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Goodbye!");
Lumikha ng isang HashSetbagay na nag-iimbak Stringng mga elemento.


Nagdaragdag kami ng mga pagbati sa iba't ibang wika sa setvariable.




Magbasa ng isang linya mula sa console.


Kung ang string ay nasa aming hanay ng mga pagbati, pagkatapos ay magpaalam kami.


3. Itakda

Ang Setkoleksyon 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: ListvsSet

Paghambingin natin ang dalawang uri ng mga koleksyon: Listat SetTitingnan 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 Setkoleksyon. Ang pinakasikat na pagpapatupad nito ay ang HashSetklase.