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ə ArrayList
də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