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 |
|---|---|
|
Butun sonlar ro'yxati |
|
Stringlar ro'yxati |
|
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 |
|---|---|
|
Ro'yxatga berilgan elementni qo'shadi |
|
Elementni ro'yxatning ma'lum bir joyiga qo'shadi. |
|
index raqam ostidagi elementni qaytaradi |
|
index raqam ostidagi elementning qiymatini qavmat ga o'zgartiradi |
|
index raqam ostidagi elementni o'chiradi. O'chirilgan elementni qaytaradi. |
|
Elementni o'chiradi: ro'yxatga elementni berish kerak. Agar bu elementlardan bir nechta bo'lsa, birinchi o'chiriladi. |
|
Ro'yxatni tozalaydi - ro'yxatdan barcha elementlarni o'chiradi. |
|
Ro'yxatda qiymat elementi bor-yo'qligini tekshiradi. |
|
Ro'yxat bo'shligini tekshiradi. Ro'yxat uzunligi nolga tengmi. |
|
Ro'yxat o'lchamini qaytaradi - ro'yxatdagi elementlar sonini. |
|
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 |
|---|---|
|
|
|
|
|
|
|
|
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 |
|---|---|
|
|
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
GO TO FULL VERSION