JavaRush /Kurslar /All lectures for UZ purposes /Collections yordamchi klassi

Collections yordamchi klassi

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Metodlar ro'yxati

Java massivlar bilan ishlashni osonlashtirish uchun yordamchi klass — Arrays yozganlarini eslaysizmi?

Kolleksiyalar uchun ham shunday qildilar. Java'da java.util.Collections klassi bor, unda kollektsiyalar bilan ishlash uchun juda ko'p foydali metodlar mavjud. Quyida ularning eng qiziqarli bo'lganlari keltirilgan:

Metodlar Ta'rif
addAll(colls, e1, e2, e3, ..)
colls kolleksiyasiga e1, e2, e3,... elementlarni qo'shadi
fill(list, obj)
Berilgan ro'yxatdagi barcha elementlarni obj ga almashtiradi
nCopies(n, obj)
obj elementidan iborat n nusxali ro'yxatni qaytaradi
replaceAll(list, oldVal, newVal)
Ro'yxatda list oldVal qiymatlarini newVal ga almashtiradi
copy(dest, src)
src ro'yxatidagi barcha elementlarni dest ro'yxatiga nusxa qiladi
reverse(list)
Ro'yxatni teskari tartibda aylantiradi
sort(list)
Ro'yxatni o'sish tartibida saralaydi
rotate(list, n)
Ro'yxatni list n elementini aylantiradi
shuffle(list)
Ro'yxat elementlarini tasodifiy aralashtiradi
min(colls)
Kolleksiya colls ning minimal elementini topadi
max(colls)
Kolleksiya colls ning maksimal elementini topadi
frequency(colls, obj)
Kolleksiyada colls obj elementi necha marta uchrashini aniqlaydi
binarySearch(list, key)
Ro'yxat list dan key elementini izlaydi, indeksni qaytaradi.
disjoint(colls1, colls2)
Agar kolleksiyada umumiy elementlar bo'lmasa true qaytaradi
Muhim:

Bu metodlar ArrayList, HashSet va HashMap klasslari bilan emas, ularning interfeyslari bilan ishlaydi: Collection<T>, List<T>, Map<K, V>.

Bu muammo emas: agar metod List<T> ni qabul qilsa, unda har doim ArrayList<Integer> ni yuborishingiz mumkin, lekin orqaga qaytarish yo'q.


2. Kolleksiyalarni yaratish va o'zgartirish

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

addAll() metodi colls kolleksiyasiga e1, e2, e3, ... elementlarni qo'shadi. Qo'shilgan elementlar soni har qanday bo'lishi mumkin.

Kod Ekranga chiqarish
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() metodi barcha elementlarni list koleksiyadagi barcha elementlarni obj elementiga almashtiradi.

Kod Ekranga chiqarish
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() metodi n nusxali obj elementlaridan iborat ro'yxatni qaytaradi. Ro'yxatni xayoliy deb atash mumkin (ichida haqiqiy massiv yo'q), shuning uchun uni o'zgartirish mumkin emas! Faqat o'qish uchun foydalanish mumkin.

Kod Ta'rif
List<String> fake = Collections.nCopies(5, "Salom");

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

for(String s: list)
   System.out.println(s);
O'zgarmas ro'yxatni 5 ta Salom elementdan yaratish
Haqiqiy ro'yxatni list yaratamiz, uni fake ro'yxatidan qiymatlar bilan to'ldiramiz.

Ekranga chiqarish:
Salom
Salom
Salom
Salom
Salom

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

replaceAll() metodi list kolleksiyasidagi barcha oldValue elementlarini newValue elementiga almashtiradi.

Kod Ekranga chiqarish
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() metodi src kolleksiyasidagi barcha elementlarni dest kolleksiyasiga nusxa qiladi.

Agar dastlab dest kolleksiyasi src kolleksiyasidan uzunroq bo'lsa, dest kolleksiyasidagi qolgan elementlar o'zgarmas qoladi.

Muhim:
dest kolleksiyasining uzunligi src kolleksiyasining uzunligidan kam bo'lmasligi kerak (aks holda IndexOutOfBoundsException xatolik ketadi).
Kod Ekranga chiqarish
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. Elementlar tartibi

Metod Collections.reverse(List<T> list)

reverse() metodi ro'yxatdagi elementlarning tartibini teskari o'zgartiradi.

Kod Ekranga chiqarish
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

Metod Collections.sort(List<T> list)

sort() metodi ro'yxatni o'sish tartibida tartiblaydi.

Kod Ekranga chiqarish
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

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

rotate() metodi berilgan elementlarni distance pozitsiyaga aylantiradi.

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

Collections.rotate(list, 3); // 3 pozitsiyaga aylantirish

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

Metod Collections.shuffle(List<T> list)

shuffle() metodi berilgan ro'yxatdagi barcha elementlarni tasodifiy aralashtiradi. Natija har safar boshqacha bo'ladi.

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

Collections.shuffle(list); // aralashtirish

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


4. Kolleksiyalardagi elementlarni qidirish

Metod Collections.min(Collection<T> colls)

min() metodi kolleksiyaning eng kichik elementini qaytaradi.

Kod Ekranga chiqarish
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() metodi kolleksiyaning eng katta elementini qaytaradi.

Kod Ekranga chiqarish
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() metodi colls kolleksiyasida obj elementi necha marta uchrashini hisoblaydi

Kod Ekranga chiqarish
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() metodi key elementini list ro'yxatida izlaydi. Topilgan elementning raqamini qaytaradi. Agar element topilmasa, manfiy son qaytaradi.

Muhim:
binarySearch() metodini chaqirishdan oldin ro'yxatni saralash kerak ( Collections.sort()).
Kod Ekranga chiqarish
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);  // yo'q
System.out.println(index3);
4
6
-8

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

disjoint() metodi agar berilgan kolleksiyalarda umumiy elementlar mavjud bo'lmasa true qaytaradi.

Kod Ekranga chiqarish
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

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION