1. Sinif ArrayList
Bu gün ArrayList sinfini öyrənəcəyik. Bu, belə deyək, kolleksiyalardan ilk sinifimizdir. Java-da kolleksiyalar o qədər geniş və faydalı mövzudur ki, CodeGym-da ona tam bir tapşırıq həsr olunub.
Kolleksiyaların necə qurulduğunu və onların iş prinsiplərini tam başa düşmək üçün əvvəlcə OOP, interfeyslər, irsi, çoxsahəliliyin əsaslarını və daha çoxunu öyrənmək lazımdır.
Buna görə də, bu gün sadəcə ən sadə kolleksiya ilə tanış olacağıq. Amma kifayət qədər dərindən öyrənəcəyik ki, necə işlədiyini və ondan necə istifadə ediləcəyini başa düşəsiniz. Beləliklə, qarşılayın: ArrayList kolleksiyası.
Bir az tarixçə
Kiçik bir tarixçə ilə başlayaq. Proqramçıları çox narahat edən bir şey var idi — massivlərin ölçüsünü dəyişmək mümkün deyildi. Əgər massivə daha üç element əlavə etmək lazım olsa, amma boş yer sadəcə bir dənə olsa, nə etməli?
Massivdə boş yerin çatışmazlığı probleminin yeganə həlli çox böyük ölçüdə bir massiv yaratmaq idi ki, bütün elementlər ora yerləşsin. Amma bu, tez-tez yaddaşın səmərəsiz istifadəsinə gətirib çıxarırdı. Adətən massivdə iki-üç element saxlanırdı, amma ən kiçik ehtimal olsa belə, orada 100 element ola biləcəyi üçün 100 elementlik massiv yaratmaq lazım gəlirdi.
Bəs proqramçılar nə fikirləşdi? Onlar ArrayList (massiv siyahısı) sinfini yaratdılar, hansı ki, Array (massiv) ilə eyni işi görürdü, amma ölçüsünü dəyişə bilirdi.
ArrayList Sinfi
ArrayList adı iki sözün birləşməsindən gəlir: Array + List. Array — massivdir, List — siyahıdır.
Hər bir ArrayList obyektinin içində adi bir massiv saxlanılır. Elementləri ArrayList-dən oxuduğunuzda o, daxili massivindən oxuyur. Yazdığınız zaman isə onları daxili massivinə yazır.
ArrayList sinfində massivlərin bütün çatışmazlıqları mövcud deyil. O, bacarır:
- Müəyyən tipdə elementləri saxlamaq
- Siyahının ölçüsünü dinamik olaraq dəyişmək
- Elementləri siyahının sonuna əlavə etmək
- Elementləri siyahının əvvəlinə və ortasına əlavə etmək
- İstənilən yerdən elementləri silmək
Ətraflı məlumat aşağıda:
2. ArrayList obyektinin yaradılması
ArrayList sinfinin obyektini yaratmaq üçün aşağıdakı kimi kod yazmaq lazımdır:
ArrayList<Tip> ad = new ArrayList<Tip>();
Burada ArrayList — kolleksiya üçün tip/sinifdir, Tip — ArrayList kolleksiyasının saxladığı elementlərin tipi, ad isə ArrayList<Tip> tipində dəyişənin adıdır.
ad dəyişənin tipi mürəkkəbdir — iki tipdən ibarətdir: əvvəlcə kolleksiyanın tipi göstərilir, sonra üçbucaq mötərizələrində həmin kolleksiyanın saxladığı elementlərin tipi göstərilir.
Nümunələr:
| Kod | Təsvir |
|---|---|
|
Tam ədədlərin siyahısı |
|
Sətirlərin siyahısı |
|
Həqiqi ədədlərin siyahısı |
Kolleksiyalar, massivlərdən fərqli olaraq, primitiv tipləri saxlaya bilmir: yalnız sinif tipləri saxlaya bilir. Ona görə də, əgər sizə int tipində kolleksiya lazımdırsa, bunun yerinə oborta tipdən — Integer istifadə edin.
3. ArrayList ilə əməliyyatlar
İlk yaradılan siyahının uzunluğu sıfıra bərabərdir: siyahı 0 elementdən ibarətdir. Siyahıya bir element əlavə etsək, onun uzunluğu 1 vahid artacaq. Əgər əlavə olunan elementi silsək, siyahının uzunluğu yenidən sıfıra enəcək.
ArrayList sinfinin metodları haqqında daha ətraflı məlumatı cədvəldən əldə edə bilərsiniz:
| Metodlar | Təsvir |
|---|---|
|
Siyahıya ötürülmüş elementi əlavə edir |
|
Elementi siyahının müəyyən bir mövqeyinə əlavə edir. |
|
index nömrəsi altında olan elementi qaytarır |
|
index nömrəsinə sahib elementin dəyərini value ilə əvəz edir |
|
index nömrəsi altındakı elementi silir. Silinmiş elementi qaytarır. |
|
Elementi silir: siyahıya elementi birbaşa vermək lazımdır. Əgər belə elementlər bir neçə dənə varsa, birincisi silinəcək. |
|
Siyahını təmizləyir — siyahıdakı bütün elementləri silir. |
|
Siyahıda value elementi olub-olmadığını yoxlayır. |
|
Siyahının boş olub-olmadığını yoxlayır. Siyahının uzunluğu sıfıra bərabərdir ya yox. |
|
Siyahının ölçüsünü qaytarır — siyahıdakı elementlərin sayını qaytarır. |
|
Siyahı ilə eyni elementləri saxlayan bir massiv qaytarır. Metoda massiv ötürmək lazımdır. |
Bu metodlar siyahı ilə demək olar ki, bütün mümkün əməliyyatları yerinə yetirməyə imkan verir: elementləri yerləyişdirmək, elementləri əlavə etmək, elementləri silmək. Hətta bir əmrlə siyahını təmizləmək və ya siyahını bir massiva çevirmək olar.
4. ArrayList ilə Array müqayisəsi
Düşünürəm ki, ArrayList ilə massiv(aranq) müqayisə etmədən keçinə bilməyəcəyik.
Əslində massivdə cəmi 4 əməliyyat var:
- Massiv yaratmaq
- Elementi nömrə ilə əldə etmək
- Elementi nömrə ilə dəyişmək
- Massivin uzunluğunu əldə etmək
Bu əməliyyatların massiv və ArrayListdəki ekvivalentləri belədir:
| Massiv | ArrayList |
|---|---|
|
|
|
|
|
|
|
|
Gəlin ArrayList ilə massivlər üzərində iş prosesini müqayisə edək. Məsələn, belə bir tapşırıq həll edək: "klaviaturadan 10 sətir daxil edin və onları əks istiqamətdə ekranda göstərin".
| Massivdən istifadə | ArrayList-dən istifadə |
|---|---|
|
|
Prinsipcə, aydın analoji müqayisə aparmaq olar. Massivdə hər şey daha qısa və sadə kimi görünür. Amma ArrayList-də də elə xüsusi çətinlik yoxdur: elementi əldə etmək — get() metodu, elementi dəyişmək — set() metodu, siyahının uzunluğunu əldə etmək — size() metodu.
Bəs proqramçılar nə üçün ArrayList sinifindən istifadə edirlər?
Təbii ki, məsələ massivlərdə olmayan və olmayacaq digər metodlardadır:
- Siyahıya element əlavə etmək
- Siyahının ortasına element daxil etmək
- Elementi siyahıda axtarmaq
- Siyahıdan elementi silmək
GO TO FULL VERSION