JavaRush /Kurslar /All lectures for UZ purposes /ArrayList bilan ishlash

ArrayList bilan ishlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. ArrayList qanday tuzilgan

ArrayList — Java'da elementlarni saqlash uchun eng ko'p ishlatiladigan sinf. Xo'sh, bu ArrayList qanday tuzilgan va nima uchun hammaga yoqadi?

ArrayList ning tuzilishi o'z mohiyatida sodda va ajoyibdir. Har bir ArrayList obyektining ichida ikkita maydon bor:

  • Elementlar ro'yxati bo'lgan massiv
  • Ro'yxatdagi elementlar sonini saqlaydigan size o'zgaruvchisi

ArrayList obyektining ichida oddiy massiv bor! Ammo faqatgina emas. U yerda yana size degan o'zgaruvchi bo'lib, ro'yxatning uzunligini saqlaydi. Bu qanday ishlaydi:

Ishni boshlaganimizda, ro'yxatning ichidagi massiv uzunligi — 10 element. Va size o'zgaruvchisi 0 ga teng.

Agar ro'yxatga element qo'shsangiz, u massivning 0-indeksidagi joyga saqlanadi va size 1 ga oshadi.

Agar yana bir element qo'shsangiz, u massivning 1-indeksidagi joyga saqlanadi va size yana 1 ga oshib, ikki bo'ladi.

Agar yangi element qo'shilayotgan vaqtda massivda joy qolmasa, add() metodida quyidagi ishlar sodir bo'ladi:

  1. yangi massiv yaratiladi, oldingisidan bir yarim barobar uzunroq
  2. unga bor bo'lgan barcha elementlar mavjud massivdan ko'chiriladi
  3. ArrayList obyektida eski massiv o'rniga yangi massivga havola saqlanadi.
  4. Yangi massivning 10-indeksidagi joyga berilgan element yoziladi
  5. size 1 ga oshadi va u endi 11 bo'ladi

Ro'yxatdan o'rtasiga element qo'shganda (kiritganda) ham shunday. Mavjud elementlar 1 o'ngga suriladi va massivdagi bo'sh joyga kerakli element yoziladi.

Ro'yxatning eng asosiy foydalanish senariylarini ko'rib chiqamiz:


2. ArrayList ga element qo'shish

Keling, ro'yxat ichida sodir bo'layotgan narsalarni, unga elementlar qo'shilganda tushunib olamiz. ArrayList obyekti yaratganimizdan so'ng, xotirada quyidagicha tasvir paydo bo'ladi:

ArrayList ga element qo'shish

Bizda ArrayList tipidagi obyekt bor, uning ichida ikkita maydon (ikkita o'zgaruvchi) mavjud: massiv (data) va elementlar soni (size). data 10 elementli konteynerga (massivga) havolani saqlab turadi.

Agar biz massivga sonni 5 qo'shishga qaror qilsak, tasvir quyidagicha bo'ladi:

ArrayList ga element qo'shish

Massivda endi 5 elementi saqlangan, va size == 1 degan o'zgaruvchi mavjud.

Agar hozirda kimdir ArrayList obyektimizdan size() metodini chaqirsa, u ro'yxatdagi elementlar sonini oladi — 1. Ro'yxatdagi elementlar soni — bu massivning hajmi emas.

Massivning haqiqiy hajmi ham, o'zi ham hech qachon ArrayList obyekti tashqarisida mavjud bo'lmaydi (ko'rinmaydi). Bu ArrayList ning ichki ma'lumotlari, va ular har doim shunday bo'lib qoladi.

Keling, ro'yxatga yana 7 ta son qo'shamiz: 10, 20, 30, 40, 50, 60, 70.

Xotirada tasvir endi quyidagicha bo'ladi:

ArrayList ga element qo'shish 2

Agar hozirda size() metodini chaqirsak, u 8 raqamini qaytaradi — ro'yxatdagi yangi elementlar soni. Bu massivning hajmiga hech qanday aloqasi yo'q.

Muhim:

Bu rasmda bitta noaniqlik bor.

ArrayList sinfi primitiv turlarni saqlay olmaydi, shuning uchun int turi o‘rniga Integer turini ishlatadi. Konteyner 5-70 qiymatlarini emas, balki Integer turidagi obyektlarga havolalarni saqlaydi. Konteynerning barcha bo'sh joylari null ni saqlaydi.



3. Ro'yxat uzunligini oshirish

Keling, massivda bo'sh joylar tugagan paytda, ro'yxat ichida nima sodir bo'lishini ko'rib chiqaylik.

Aytaylik, bizda 10 ta elementli ro'yxat bor edi:

Ro'yxat uzunligini oshirish

Biz unga 100 sonini qo'shishga qaror qildik, add() metodida quyidagi ishlar sodir bo'ladi:

1-qadam — yangi massiv yaratish:

Ro'yxat uzunligini oshirish 1

2-qadam — eski massivdan yangi massivga barcha elementlarni nusxalash:

Ro'yxat uzunligini oshirish

3-qadam — massivni almashtirish (ArrayList obyektining ichidagi massivga havolani o'zgartirish):

Ro'yxat uzunligini oshirish 3

4-qadam — yangi sonni qo'shish, buning uchun biz ko'p ishladik:

Ro'yxat uzunligini oshirish 4

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