CodeGym /Kurslar /Java SELF AZ /HashSet Kolleksiyası

HashSet Kolleksiyası

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Konteynerlər və kolleksiyalar

Konteynerlər və ya kolleksiyalar çoxlu obyektləri birdən saxlamağa və işlətməyə imkan verən siniflər adlanır. Artıq siz konteynerlərin iki növünü — massivləri və siyahıları bilirsiniz.

Java-da bir neçə onlarla kolleksiya var, hər biri elementləri özünəməxsus şəkildə saxlayır. Onlardan bəziləri:

Kolleksiya növü Sinif Təsvir
List
ArrayList
Siyahı
LinkedList
Zəncirvari siyahı
Vector
Vektor
Stack
Stek (stack)
Set
HashSet
Cəm (gövdə)
TreeSet
LinkedHashSet
Queue
PriorityQueue
Növbə
ArrayDeque
Map
HashMap
Xəritə/Sözlük
TreeMap
HashTable

Adlarla bağlı bəzi qeyri-müəyyənliklər var. Hərçənd ki, proqramlaşdırma dillərinin çoxunda bu bütün məlumat strukturları kolleksiya adlanır, Java-da bu belə deyil. Java dilində bu siniflərdən bəziləri Collection interfeysini həyata keçirir, digərləri isə yox.

Ona görə də kolleksiyalar geniş mənada və dar mənada kolleksiyalara bölünüb (yalnız Collection interfeysini həyata keçirənlər).

Buna görə də çaşqınlıqdan qaçmaq üçün kolleksiyalar yalnız dar mənadakı kolleksiyaları (siniflər Collection interfeysini həyata keçirməli) adlandırılır. Bunlar List, SetQueue tipli kolleksiyalardır. Geniş mənadakı kolleksiyalar isə konteynerlər adlanır. Onlara Map və massivlər kimi siniflər daxildir.


2. HashSet Kolleksiyası

HashSet sinifi "cəm" tipli kolleksiyaların tipik nümayəndəsidir. O çox baxımdan ArrayList sinifinə oxşayır və müəyyən mənada onun daha primitiv versiyasıdır.

HashSet tipində obyekt yaratmaq üçün aşağıdakı komanda istifadə olunur:

HashSet<Tip> ad = new HashSet<Tip>();

Burada tip — kolleksiya HashSet-də saxlanılan elementlərin tipidir.

HashSet sinifində belə metodlar mövcuddur:

Metod Təsvir
boolean add(Tip value)
Elementi value kolleksiyaya əlavə edir
boolean remove(Tip value)
Elementi value kolleksiyadan silir.
true qaytarır, əgər belə element varsa
boolean contains(Tip value)
Kolleksiyada value elementi olub-olmadığını yoxlayır
void clear()
Kolleksiyanı təmizləyir: bütün elementləri silir
int size()
Kolleksiyadakı elementlərin sayını qaytarır

Kolleksiyadan istifadəyə nümunə.

Gəlin bir proqram yazaq ki, istifadəçi onunla salamlaşanda vidalaşsın: əgər istifadəçi "salam" dedisə. Daha maraqlı etmək üçün "salam" bir neçə dildə deyilə bilər.

Kod Qeyd
HashSet<String> set = new HashSet<String>();

set.add("Salam");
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("Görüşənədək!");
HashSet tipində obyekt yaradırıq, hansı ki elementləri String tipində saxlayır.


set-ə müxtəlif dillərdə salam ifadələri əlavə edirik.




Konsoldan söz daxil edirik,


əgər bu söz bizim salam ifadələri kolleksiyamızda varsa, vidalaşırıq.


3. Cəm

Set kolleksiyası elementlərin cəmini saxlamaq üçün yaradılmışdır. Buna görə də ona Set (cəm) deyilir. Bu kolleksiyanın üç xüsusiyyəti var.

Cəm üzərində əməliyyatlar

Cəm ilə yalnız üç əməliyyat etmək olar: cəmə element əlavə etmək, cəmdən elementi çıxarmaq və müəyyən elementin cəmdə olub-olmadığını yoxlamaq. Hamısı bu qədər.

Sıranın olmaması

Bu kolleksiyanın elementlərinin nömrələri yoxdur. Elementi indeksə görə əldə etmək və ya indeksə görə kolleksiyaya dəyər yazmaq olmaz. Cəmdə get()set() metodları yoxdur.

Elementlərin unikal olması

Cəmin bütün elementləri unikaldır. Siyahıdan fərqli olaraq, cəmdə bir element yalnız bir dəfə ola bilər. Obyekt ya cəmdədir, ya da deyil: üçüncü variant yoxdur. "Rənglər cəminə" üç dəfə "qara rəngi" əlavə etmək olmaz. Ya o oradadır, ya da yoxdur.

Elementlərin axtarışı

Cəmə yeni element əlavə etdiyiniz zaman, elementi sildiyiniz zaman və ya elementin olub-olmadığını yoxladığınız zaman, metodun daxilində elementin axtarışı həyata keçirilir. Kolleksiya elementləri və ötürülən element əvvəlcə hashCode() ilə müqayisə olunur, əgər hashCode() uyğun gəlirsə, equals ilə müqayisə olunur.



4. Kolleksiyaların müqayisəsi: List vs Set

Gəlin iki növ kolleksiyanı müqayisə edək: ListSet. Onların əsas fərqləri nədir və nə vaxt biri daha faydalıdır, nə vaxt isə digəri.

Gəlin Siyahı və Cəmi uşaqların oyuncaqları misalında müqayisə edək.

List (Siyahı) Kolleksiyası uşaq otağında divarın yanında duran oyuncaq dəstinə bənzəyir. Siyahının sonuna oyuncaq əlavə etmək olar. Çox ehtiyac varsa, ortasına da əlavə etmək olar (amma bəzi oyuncaqları yerindən tərpətmək lazım olacaq).

Hər oyuncaqın sıravi nömrəsi var. Oyuncağı nömrəsinə görə götürmək və ya nömrəsi 7 olan oyuncağı nömrəsi 13 olan bir oyuncaqla əvəz etmək olar. Siyahıdan nömrəsi 4 olan oyuncağı silmək də mümkündür. Və nəhayət, siyahıdakı bütün oyuncaqların sayını öyrənmək olar.

Set (Cəm) Kolleksiyası isə daha çox bir yerə yığılmış oyuncaq yığınına bənzəyir. Oyuncaq yığınına oyuncaq əlavə etmək, oyuncaq yığından bir oyuncaq çıxarmaq mümkündür. Amma belə oyuncaqların təsdiq edilmiş nömrəsi yoxdur.

Və ya tutaq ki, uşağa ad günü üçün oyuncaq seçirsiniz. O zaman ilk olaraq düşünürsünüz ki, bu oyuncağı onun artıq var, ya yoxdur. Onda, onun artıq sahib olduğu bütün oyuncaqlar, sizin almamaq qərarı verdiyiniz oyuncaqların cəmini təşkil edir.

Bu baxımdan «artıq var» dəstindəki oyuncaqların sırası əhəmiyyətli deyil, beləliklə də, ad günü olan uşağın iki eyni oyuncağa malik olması da əhəmiyyət daşımır. Sizi maraqlandıran nə oyuncaqların sayıdır, nə də özü, sadəcə olaraq unikal obyektlərdən ibarət bir dəstdir.

Belə hallarda sizə Set cəmi və onun ən məşhur nümayəndəsi olan HashSet sinfi lazım olacaq.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION