CodeGym /Kurslar /Java SELF AZ /Collections Köməkçi Sinifi

Collections Köməkçi Sinifi

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

1. Metodların siyahısı

Xatırlayın ki, Java-da developer-lər array-lərlə işləməyi asanlaşdırmaq üçün bir köməkçi sinif — Arrays yazıblar?

Kolleksiyalar üçün də eyni şeyi ediblər. Java-da java.util.Collections sinifi mövcuddur, və bu sinif kolleksiyalarla işləyərkən çox faydalı olan bir çox metodlara sahibdir. Aşağıda onların ən maraqlılarını təqdim edirik:

Metodlar Təsviri
addAll(colls, e1, e2, e3, ..)
Kolleksiyaya colls elementləri e1, e2, e3,... əlavə edir
fill(list, obj)
Göndərilən list-dən bütün elementləri obj ilə əvəz edir
nCopies(n, obj)
n ədəd obj obyektindən ibarət bir list qaytarır
replaceAll(list, oldVal, newVal)
List-də oldVal olan bütün dəyərləri newVal ilə əvəz edir
copy(dest, src)
Bütün elementləri src list-dən dest list-ə kopyalayır
reverse(list)
List-i tərsinə çevirir
sort(list)
List-i artan sıra ilə sıralayır
rotate(list, n)
List-in elementlərini n dəfəyə dövr edir
shuffle(list)
List-in elementlərini random şəkildə dəyişir
min(colls)
Kolleksiyada colls ən kiçik elementi tapır
max(colls)
Kolleksiyada colls ən böyük elementi tapır
frequency(colls, obj)
obj elementinin colls kolleksiyasında neçə dəfə olduğunu təyin edir
binarySearch(list, key)
Sıralanmış list-də key elementini axtarır, indeksini qaytarır.
disjoint(colls1, colls2)
Əgər kolleksiyalarda ümumi element yoxdursa, true qaytarır

Bu metodların çoxu ArrayList, HashSetHashMap siniflərində deyil, onların interfeyslərində işləyir: Collection<T>, List<T>, Map<K, V>.

Bu problem deyil: əgər metod List<T> qəbul edirsə, ona həmişə ArrayList<Integer> ötürülə bilər, amma əksinə təyin etmək olmaz.


2. Kolleksiyaların yaradılması və dəyişdirilməsi

Metod Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)

addAll() metodu colls kolleksiyasına e1, e2, e3, ... elementlərini əlavə edir. Göndərilən elementlərin sayı istənilən qədər ola bilər.

Kod Ekrana çıxışı
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

for (int i: list)
   System.out.println(i);
1
2
3
4
5

Metod Collections.fill(List<T> list, T obj)

fill() metodu kolleksiyanın list bütün elementlərini obj elementi ilə əvəz edir.

Kod Ekrana çıxışı
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.fill(list, 10);

for (int i: list)
   System.out.println(i);
10
10
10

Metod Collections.nCopies (int n, T obj)

nCopies() metodu obj elementinin n nüsxəsindən ibarət siyahı qaytarır. Siyahı qondarma adlandırıla bilər (içəridə real massiv yoxdur), buna görə onu dəyişmək olmaz! Yalnız oxumaq üçün istifadə etmək olar.

Kod Təsvir
List<String> fake = Collections.nCopies(5, "Salam");

ArrayList<String> list = new ArrayList<String>(fake);

for(String s: list)
   System.out.println(s);
5 elementdən ibarət dəyişməz siyahı yaradırıq Salam
Real siyahı yaradırıq list, onu fake siyahısının dəyərləri ilə doldururuq.

Ekrana çıxarırıq:
Salam
Salam
Salam
Salam
Salam

Metod Collections.replaceAll (List<T> list, T oldValue, T newValue)

replaceAll() metodu list kolleksiyasının bütün oldValue dəyərinə bərabər olan elementlərini newValue elementi ilə əvəz edir.

Kod Ekrana çıxışı
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.replaceAll(list, 2, 20);

for (int i: list)
   System.out.println(i);
1
20
3

Metod Collections.copy (List<T> dest, List<T> src)

copy() metodu src kolleksiyasının bütün elementlərini dest kolleksiyasına kopyalayır.

Əgər ilkin olaraq dest kolleksiyası src kolleksiyasından daha uzun olarsa, onda dest kolleksiyasının artan elementləri toxunulmaz qalacaq.

dest kolleksiyasının uzunluğu src kolleksiyasının uzunluğundan az olmamalıdır (əks halda IndexOutOfBoundsException atılacaq).
Kod Ekrana çıxışı
ArrayList<Integer> srcList = new ArrayList<Integer>();
Collections.addAll(srcList, 99, 98, 97);

ArrayList<Integer> destList = new ArrayList<Integer>();
Collections.addAll(destList, 1, 2, 3, 4, 5, 6, 7);

Collections.copy(destList, srcList);

for (int i: destList)
   System.out.println(i);
99
98
97
4
5
6
7


3. Elementlərin ardıcıllığı

Collections.reverse(List<T> list) metodu

reverse() metodu siyahıya daxil edilmiş elementlərin sırasını tərsinə dəyişir.

Kod Ekranda Çap
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.reverse(list);

for (int i: list)
   System.out.println(i);
5
4
3
2
1

Collections.sort(List<T> list) metodu

sort() metodu siyahıya daxil edilmiş elementləri artan ardıcıllıqla sıralayır.

Kod Ekranda Çap
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

Collections.sort(list);

for (int i: list)
   System.out.println(i);
2
4
11
15
23

Collections.rotate(List<T> list, int distance) metodu

rotate() metodu siyahıya daxil edilmiş elementləri distance qədər irəli dövrü şəklində hərəkət etdirir.

Kod Ekranda Çap
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // 3 mövqe irəli çevir

for (int i: list)
   System.out.println(i);
7
8
9
1
2
3
4
5
6

Collections.shuffle(List<T> list) metodu

shuffle() metodu siyahıya daxil edilmiş elementləri təsadüfi qaydada qarışdırır. Nəticə hər dəfə fərqli olur.

Kod Ekranda Çap
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // qarışdırırıq

for (int i: list)
   System.out.println(i);
5
2
4
3
1


4. Kolleksiyalarda elementlərin axtarışı

Metod Collections.min(Collection<T> colls)

min() metodu kolleksiyanın ən kiçik elementini qaytarır.

Kod Ekranda çıxış
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

Metod Collections.max(Collection<T> colls)

max() metodu kolleksiyanın ən böyük elementini qaytarır.

Kod Ekranda çıxış
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

Metod Collections.frequency(Collection<T> colls, T obj)

frequency() metodu colls kolleksiyasında obj elementinin neçə dəfə olduğunu sayır.

Kod Ekranda çıxış
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15, 4, 2, 4);

int count = Collections.frequency(list, 4);

System.out.println(count);
3

Metod Collections.binarySearch(List<T> list, T key)

binarySearch() metodu list siyahısında key elementini axtarır. Tapılmış elementin nömrəsini qaytarır. Əgər element tapılmazsa, mənfi bir ədəd qaytarır.

Vacib:
Metod binarySearch() çağrılmadan qabaq siyahı çeşidlənməlidir ( Collections.sort()).
Kod Ekranda çıxış
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 5, 15, 4, 2, 4);

Collections.sort(list);  // 2, 2, 4, 4, 5, 11, 15, 23

int index = Collections.binarySearch(list, 5);    // 4
System.out.println(index);

int index2 = Collections.binarySearch(list, 15);  // 6
System.out.println(index2);

int index3 = Collections.binarySearch(list, 16);  // yoxdur
System.out.println(index3);
4
6
-8

Metod Collections.disjoint(Collection<T> coll1, Collection<T> coll2)

disjoint() metodu verilmiş kolleksiyaların ortaq elementlərinin olub-olmamasını yoxlayır və true qaytarır, əgər yoxdursa.

Kod Ekranda çıxış
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);

ArrayList<Integer> list2 = new ArrayList<Integer>();
Collections.addAll(list2, 99, 98, 97);

boolean isDifferent = Collections.disjoint(list, list2);
System.out.println(isDifferent);
true

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