1. Ro'yxatning o'rtasiga (yoki boshiga) element qo'shish
Agar biz ro'yxatning o'rtasiga element qo'shmoqchi bo'lsak, ro'yxat ichida mana nima sodir bo'ladi.
Faraz qilaylik, 11 ta elementdan iborat ro'yxat bor:

Biz 10,000 raqamini 5-raqamli joyga qo'yishni xohlaymiz, buning uchun quyidagi buyruqni bajarish kerak:
list.add(5, 10000);
Bu yerda list — ArrayList turidagi o'zgaruvchi, add(int index, tur value) metodi 10000 qiymatini ro'yxatning 5-pozitsiyasiga qo'shadi. Metod add()da nima sodir bo'layotganini quyida ko'ramiz:
1-qadam: massiving 5-elementidan boshlab barchasi bir pog'ona oxiriga siljiydi (ko'chiriladi):

Diqqat: massiving 5-chi va 6-chi kataklaridagi elementlar endi bir xil.
2-qadam: 5-chi katakka 10,000 qiymatini yozamiz:

Endi ro'yxatda barcha elementlar bor, 5-chi katakda esa 10,000 soni yozilgan. Biz xohlagan narsani qilgan bo'lamiz.
2. Ro'yxatdan elementni o'chirish
Ro'yxatdan elementni o'chirish operatsiyasi, uni qo'shish operatsiyasiga o'xshaydi, faqat jarayon teskari bo'ladi.
Keling, ro'yxatdagi 3-indeksli elementni o'chiraylik, buning uchun quyidagi buyruqni bajarish kerak:
list.remove(3);
Mana remove() metodida nima sodir bo'ladi:
1-qadam: massiving 4-elementidan boshlab barchasi bir pog'ona boshiga siljiydi (ko'chiriladi):

2-qadam: size o'zgaruvchining qiymati 1 ga kamayadi.

Diqqat: Massiv oxirida, kulrang rangda belgilangan joyda qandaydir qiymatlar bor. Texnik jihatdan bu axlat. Uni olib tashlash kerak, shunda axlat yig'ish jarayoniga xalaqit qilmaydi.
3-qadam: Axlatni o'chirish

3. Java'da ro'yxat bilan ishlashning amaliy misollari
Keling, ro'yxatlar bilan bir nechta misollar yozamiz:
Ro'yxatga 1 dan 20 gacha barcha juft sonlarni qo'shamiz:
| Kod | Izohlar |
|---|---|
|
Obyekt ro'yxatini yaratamiz barcha 1 .. 20 sondan iborat siklagar son 2 ga qoldiqsiz bo'linsa,uni ro'yxatga qo'shish |
Endi ro'yxatdagi barcha elementlarni ekranga chiqaramiz:
| Kod | Izohlar |
|---|---|
|
Obyekt ro'yxatini yaratamiz barcha 1 .. 20 sondan iborat siklagar son 2 ga qoldiqsiz bo'linsauni ro'yxatga qo'shish nolddan ro'yxat o'lchamigacha bo'lgan sikl har bir elementni ekranga chiqaramiz |
Elementlarni o'chirish:
Endi 4 ga bo'linadigan barcha elementlarni o'chiramiz. Diqqat qiling, ro'yxatdan bir element o'chirilganidan so'ng boshqa elementlarning pozitsiyalari o'zgaradi.
| Kod | Izohlar |
|---|---|
|
Obyekt ro'yxatini yaratamiz barcha 1 .. 20 sondan iborat siklagar son 2 ga qoldiqsiz bo'linsa,uni ro'yxatga qo'shish. nolddan ro'yxat o'lchamigacha bo'lgan sikl agar ro'yxat elementi 4 ga qoldiqsiz bo'linadigan bo'lsa:a) elementni o'chirish b) kelsi safargi siklda yana o'sha elementga borish uchun ini kamaytiring |
Oddiyroq usul bor — ro'yxatni oxiridan boshlab aylanib chiqish: for (int i = list.size() - 1; i >= 0; i--). Shunda indekslarning siljishi xalaqit bermaydi va sikl tanasida i-- kerak emas. Shuningdek, removeIf() metodidan foydalanishingiz mumkin: list.removeIf(x -> x % 4 == 0);
Faraz qilaylik, sizga ro'yxatning oxiridan 3 ta elementni o'chirish kerak.
Buni noto'g'ri qilish:
| Kod | Izohlar |
|---|---|
|
Obyekt ro'yxatini yaratamiz ro'yxatda 10 ta element: 2, 4, 6, ... 20n = 10n - 3 = 7 (ro'yxatda 9 ta element qoladi)n - 2 = 8 (ro'yxatda 8 ta element qoladi)n - 1 = 9 (ro'yxatda 7 ta element qoladi) |
7 va 8 elementlarni o'chirib bo'lgandan so'ng, ro'yxatda faqat 8 ta element qoladi. Shuning uchun 9-elementni o'chirib bo'lmaydi — dasturda xato paydo bo'ladi.
Elementlarni qanday qilib to'g'ri o'chirish kerak edi:
| Variant 1 | Variant 2 |
|---|---|
|
|
Elementlarni yoki oxiridan o'chirish kerak, yoki bir xil joyda, har bir o'chirishdan so'ng elementlar bir pog'onaga siljiydi.
GO TO FULL VERSION