JavaRush /Kurslar /All lectures for UZ purposes /Java'da kolleksiyalar: ArrayList

Java'da kolleksiyalar: ArrayList

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Klass ArrayList

Bugun biz ArrayList klassini o'rganamiz. Bu shunday deb ataladigan kolleksiyalar'ning birinchi klassi. Java'dagi kolleksiyalar shunchalik keng ko'lamli va foydali narsa, JavaRush'da unga to'liq bir qidirish bag'ishlangan.

Kolleksiyalar qanday tartiblanganligini va ularni qanday ishlashi haqidagi barcha tafsilotlarni tushunish uchun avval OOP, interfeyslar, meros, ko'p iplar va yordamchi ma'lumotlarni o'rganishingiz kerak.

Shuning uchun, bugun biz faqat eng oddiy kolleksiya bilan tanishamiz. Ammo yetarli darajada chuqur ko'rsatamagacha o'rganamiz, shunda undan qanday foydalanishni va qanday ishlashini tushunasiz. Xush kelibsiz: kolleksiya ArrayList.

Oldingi tarix

Kichik bir tarix bilan boshlayman. Dasturchilar massivning bir xususiyatini juda yoqtirmaydilar - uning o'lchamini o'zgartirib bo'lmaydi. Agar massivda yana uchta element saqlash kerak bo'lsa, lekin faqat bitta bo'sh joy mavjud bo'lsa, nima qilish kerak?

Massivda joy yetishmovchiligi muammosining yagona echimi juda katta o'lchamdagi massiv yaratish edi, shunda barcha elementlar u yerda joylashardi. Ammo bu ko'pincha xotirani noto'g'ri sarflashga olib kelardi. Agar odatda massivda ikki-uch element saqlanadigan bo'lsa, lekin kamida kichik bir imkoniyat bo'lsa, u yerda 100 bo'lishi mumkin, massiv 100 element qilish kerak bo'lardi.

Xo'sh, dasturchilar nima ixtiro qildi? Ular ArrayList klassini (massiv-ro'yxat), yaratdilar, bu Array (massiv) qilish kerak bo'lgan ishni qilardi, lekin o'z hajmini o'zgartira olardi.

ArrayList Klass

ArrayList nomi ikki so'zdan kelib chiqqan: Array + List. Array - bu massiv, List - bu ro'yxat.

Har bir ArrayList tipidagi obyekt ichida oddiy elementlar massivi saqlanadi. Siz ArrayList'dan elementlarni o'qiganda, u o'z ichki massivdan o'qiydi. Yozishda esa ularni ichki massivga yozadi.

ArrayList klassida massivlar mavjud bo'lgan barcha kamchiliklar yo'qdir. U quyidagi narsalarni biladi:

  • Muayyan turdagi elementlarni saqlash
  • Ro'yxat hajmini dinamik ravishda o'zgartirish
  • Ro'yxat oxiriga elementlar qo'shish
  • Ro'yxat boshiga va o'rtasiga elementlar qo'shish
  • Ro'yxatning har qanday joyidan elementlarni o'chirish

Batafsil - quyida:


2. ArrayList obyektini yaratish

ArrayList klassidan obyekt yaratish uchun quyidagi kabi kod yozish kerak:

ArrayList<Tur> ism = new ArrayList<Tur>();

Bu yerda ArrayList - bu kolleksiya turi/klass, Tur - bu ArrayList kolleksiyasi saqlagan elementlar turi, va ism - bu ArrayList<Tur> turidagi o'zgaruvchining ismi.

ism o'zgaruvchining turi murakkab - ikki turdan iborat: avval kolleksiya turi ko'rsatilgan, keyin esa uchburchak qavslar ichida bu kolleksiya saqlagan elementlar turi ko'rsatiladi.

Misollar:

Kod Tavsif
ArrayList<Integer> list = new ArrayList<Integer>();
Butun sonlar ro'yxati
ArrayList<String> list = new ArrayList<String>();
Stringlar ro'yxati
ArrayList<Double> list = new ArrayList<Double>();
Haqiqiy sonlar ro'yxati

Kolleksiyalar, massivlardan farqli o'laroq, primitiv turlarni saqlay olmaydi: faqat klass turlari. Shuning uchun agar sizga int turidagi kolleksiya kerak bo'lsa, o'rniga type-wrapper - Integer dan foydalaning.


3. ArrayList bilan operatsiyalar

Yangi yaratilgan ro'yxatning boshlang'ich uzunligi nolga teng: u 0 elementni o'z ichiga oladi. Agar ro'yxatga bittadan element qo'shsangiz, uning uzunligi 1 ga oshadi. Agar qo'shilgan elementni o'chirsangiz, qayta nolgacha kamayadi.

ArrayList klassining metodlari haqida batafsil ma'lumot quyidagi jadvalda:

Metodlar Tavsif
void add(tur qiymat)
Ro'yxatga berilgan elementni qo'shadi
void add(int index, tur qiymat)
Elementni ro'yxatning ma'lum bir joyiga qo'shadi.
tur get(int index)
index raqam ostidagi elementni qaytaradi
void set(int index, tur qiymat)
index raqam ostidagi elementning qiymatini qavmat ga o'zgartiradi
tur remove(int index)
index raqam ostidagi elementni o'chiradi. O'chirilgan elementni qaytaradi.
boolean remove(tur qiymat)
Elementni o'chiradi: ro'yxatga elementni berish kerak. Agar bu elementlardan bir nechta bo'lsa, birinchi o'chiriladi.
void clear()
Ro'yxatni tozalaydi - ro'yxatdan barcha elementlarni o'chiradi.
boolean contains(tur qiymat)
Ro'yxatda qiymat elementi bor-yo'qligini tekshiradi.
boolean isEmpty()
Ro'yxat bo'shligini tekshiradi. Ro'yxat uzunligi nolga tengmi.
int size()
Ro'yxat o'lchamini qaytaradi - ro'yxatdagi elementlar sonini.
tur[] toArray(tur[] array)
Ro'yxat bilan bir xil elementlarni saqlaydigan massivni qaytaradi.
Massivni metodga berish kerak.

Bu metodlar ro'yxat bilan jinsi bemalol ishlashga imkon beradi: elementlarni o'rin almashtirish, elementlar qo'shish, elementlar o'chirish. Siz hatto bitta buyruq bilan ro'yxatni tozalashingiz yoki ro'yxatni massiga aylantirishingiz mumkin.



4. ArrayList va Arrayni solishtirish

O'ylaymanki, ArrayList va massivni solishtirmasdan o'tib ketmaymiz.

Aslida, massivda atigi 4 ta harakat mavjud:

  • Massiv yaratish
  • Elementni raqam bo'yicha olish
  • Elementni raqam bo'yicha o'rnatish
  • Massiv uzunligini olish

Bu operatsiyalarning massivdagi va ArrayListdagi analoglari quyida:

Massiv ArrayList
String[] array = new String[10];
ArrayList<String> list = new  ArrayList<String>();
String s = array[0];
String s = list.get(0);
array[0] = "Xayr";
list.set(0, "Xayr");
int count = array.length;
int count = list.size();

Keling, ArrayList va massivni solishtiraylik. Masalan, "klaviaturadan 10 ta string kiriting va ularni teskari tartibda ekranga chiqaring" masalasini hal qilamiz

Array (massiv) ishlatamiz ArrayList ishlatamiz
Scanner console = new Scanner(System.in);

// klaviaturadan stringlarni kiritish
String[] list = new String[10];

for (int i = 0; i < list.length; i++)
{
    String s = console.nextLine();
    list[i] = s;
}

// massiv mazmunini ekranga chiqish
for (int i = 0; i < list.length; i++)
{
    int j = list.length - i - 1;
    System.out.println(list[j]);
}
Scanner console = new Scanner(System.in);

// klaviaturadan stringlarni kiritish
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < 10; i++)
{
    String s = console.nextLine();
    list.add(s);
}

// kolleksiya mazmunini ekranga chiqarish
for (int i = 0; i < list.size(); i++)
{
    int j = list.size() - i - 1;
    System.out.println(list.get(j));
}

Aslida aniq bir analogiya o'tkazish mumkin. Ammo massivda hammasi qandaydir qisqaroq va tushunarliroqdek ko'rinadi. Lekin ArrayListda ham unchalik qiyin emas: elementni olish - get() metodi, elementni o'zgartirish - set() metodi, ro'yxat uzunligini olish - size() metodi.

Xo'sh, dasturchilar nega ArrayList klassidan foydalanadilar?

Albatta, hammasi qolgan metodlarda, ular massivda yo'q va bo'lmaydi:

  • Ro'yxatga element qo'shish
  • Ro'yxatning o'rtasiga element qo'shish
  • Ro'yxatdagi elementni qidirish
  • Ro'yxatdagi elementni o'chirish

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