CodeGym /Kurslar /Java SELF AZ /ArrayList ilə iş, hissə 2

ArrayList ilə iş, hissə 2

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Elementin siyahının ortasına (və ya əvvəlinə) əlavə olunması

Əgər biz elementi siyahının ortasına əlavə etmək istəyiriksə, onda siyahı daxilində aşağıdakılar baş verir.

Tutaq ki, 11 elementdən ibarət bir siyahımız var:

Elementin siyahının ortasına (və ya əvvəlinə) əlavə olunması

Biz 10,000 rəqəmini siyahıya 5-ci nömrə ilə əlavə etmək istəyirik, bunun üçün sadəcə bu əmri icra etmək kifayətdir:

list.add(5, 10000);

Burada list — bu ArrayList tipində dəyişəndir, add(int index, tip value) metodu 10000 dəyərini siyahının 5-ci mövqeyinə əlavə edir. add() metodunda aşağıdakılar baş verir:

1-ci addım: 5-ci elementdən başlayaraq bütün massiv elementləri 1 mövqe irəli (massivin sonuna doğru) köçürülür:

Elementin siyahının ortasına (və ya əvvəlinə) əlavə olunması 1

Diqqət edin: massivdəki 5-ci və 6-cı hüceyrələrdəki elementlər artıq eynidir.

2-ci addım: 5-ci hüceyrəyə 10,000 dəyərini yazırıq:

Elementin siyahının ortasına (və ya əvvəlinə) əlavə olunması 2

İndi siyahıda bütün massiv elementləri var, və 5-ci hüceyrədə 10,000 rəqəmi yazılıb. İstədiyimiz kimi.



2. Siyahıdan elementi silmək

Siyahıdan elementi silmək əməliyyatı, onu əlavə etmək əməliyyatına bənzəyir, sadəcə proses əksinədir.

Gəlin siyahıdan indeks 3 olan elementi silək. Bunun üçün aşağıdakı əmri yerinə yetirmək lazımdır:

list.remove(3);

Bununla remove() metodunda baş verən proses belədir:

Addım 1: 4-cü elementdən başlayan massiv elementləri bir mövqeyə əvvəlki yerə sürüşdürüləcək (kopyalanacaq):

Siyahıdan elementin silinməsi 1

Addım 2: size dəyişəninin dəyəri 1 vahid azaldılacaq.

Siyahıdan elementin silinməsi 2

Diqqət yetirin: Boz rənglə işarələnmiş massivdə son hissədə bəzi dəyərlər var. Texniki olaraq bu, zibil olaraq qəbul edilir. Zibilləri silmək lazımdır ki, zibil yığımı prosesinə mane olmasın.

Addım 3: zibillərin silinməsi

Siyahıdan elementin silinməsi 3



3. Java-da siyahı ilə praktik nümunələr

Gəlin siyahılar ilə iş üzrə bir neçə nümunə yazaq:

Siyahıya 1-dən 20-yə qədər olan bütün cüt rəqəmləri əlavə edək:

Kod Qeyd
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
Siyahı obyektini yaradırıq

1 .. 20 rəqəmləri üzrə dövr
əgər ədəd 2-yə tam bölünürsə,
onu siyahıya əlavə edirik

İndi siyahının bütün elementlərini ekrana çıxaraq:

Kod Qeyd
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
Siyahı obyektini yaradırıq
1 .. 20 rəqəmləri üzrə dövr

əgər ədəd 2-yə tam bölünürsə
onu siyahıya əlavə edirik

siyahının ölçüsünə qədər dövr
hər bir elementi ekrana çıxarırıq

Elementlərin silinməsi:

İndi isə gəlin 4-ə bölünən bütün elementləri silək. Nəzərə alın ki, siyahıdan bir elementi sildikdən sonra qalan elementlərin mövqeləri dəyişir.

Kod Qeyd
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
Siyahı obyektini yaradırıq

1 .. 20 rəqəmləri üzrə dövr
əgər ədəd 2-yə tam bölünürsə,
onu siyahıya əlavə edirik.

siyahının ölçüsünə qədər dövr
əgər siyahının elementi 4-ə tam bölünürsə:

a) elementi silirik
b) növbəti dövr üçün həmin elementi təkrar yoxlamaq üçün i dəyişəni azaldırıq

Tutaq ki, sizə siyahının son 3 elementini silmək lazımdır.

Necə etmək düzgün deyil:

Kod Qeyd
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
Siyahı obyektini yaradırıq

siyahıda 10 element var: 2, 4, 6, ... 20



n = 10
n - 3 = 7 (siyahıda 9 element qaldı)
n - 2 = 8 (siyahıda 8 element qaldı)
n - 1 = 9 (siyahıda 7 element qaldı)

7 və 8 elementləri sildikdən sonra, siyahıda cəmi 8 element qalır. Buna görə 9-cu elementi silmək mümkün olmayacaq — proqramda xəta yaranacaq.

Elementləri necə silmək lazım idi:

Birinci variant İkinci variant
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

Elementləri ya sondan silmək lazımdır, ya da sadəcə olaraq hər dəfə eyni yerdən — silmədən sonra elementlər bir mövqe sola keçəcək.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION