CodeGym /Kurslar /JAVA 25 SELF /«Sonsuz massiv» — ArrayList<T>

«Sonsuz massiv» — ArrayList<T>

JAVA 25 SELF
Səviyyə , Dərs
Mövcuddur

1. Giriş

Bu, bonus səviyyəsinin ilk mühazirəsidir. Artıq OOP öyrənməsinə çox yaxınlaşmışıq. Və mən marağınızı artırmaq və bir az da irəli qaçmaq istəyirəm 😈. Bu səviyyədə sizə 5 maraqlı şeydən danışacağam:

  1. ♾️ Sonsuz massivlər yaratmağı öyrənəcəksiniz
  2. 📖 Sonra “şəxsi lüğət” aparacaqsınız
  3. 💾 Bundan sonra sizi fayllarla işləmə ilə bir az tanış edəcəyəm
  4. 🌐 Daha sonra internetdən şəkillər yükləməyi öyrənəcəyik
  5. 🛰️ Səviyyənin son mühazirəsində isə Beynəlxalq Kosmik Stansiyanı (ISS) real vaxtda izləyəcəksiniz

Bütün bunların daxildə necə işlədiyini gələcək səviyyələrdə öyrənəcəksiniz, bu gün isə mənim təqdim etdiyim alətlərdən istifadə etməyi sadəcə öyrənəcəksiniz. Maraqlı gəldi? Onda başlayaq 😇.

Adi massivləri yada salaq

Gəlin Javada adi massivə baxaq:

int[] arr = new int[10];

Əla alətdir, amma iki məhdudiyyəti var: ölçü sabitdir, element əlavə etmək və ya çıxarmaq üçün yeni massiv yaratmadan mümkün deyil. Halbuki bəzən ehtiyacdan asılı olaraq böyüyüb kiçilən massiv istəyirik. Və bunun üçün əla həllimiz var — dinamik massiv ArrayList!

ArrayList — bu, avtomatik olaraq böyüyüb kiçilə bilən “ağıllı massiv”dir. Adi massivdən fərqli olaraq, burada ölçü sabit deyil, ArrayList yeni elementlər üçün yerin kifayət olmasına özü nəzarət edir.

Sonsuz massiv yaradırıq

Bizim ArrayList-i yaratmaq üçün belə bir kod yazmaq lazımdır:

ArrayList<String> array = new ArrayList<String>()

Bundan sonra ona elementlər əlavə etmək olar:

array.add("Maşa");
array.add("Katya");

Tam ədədlər üçün dinamik massiv yaradırıq

Artıq yəqin başa düşdüyünüz kimi, dinamik massivimizin elementlərinin tipi kəskin mötərizələrdə göstərilməlidir. Orada primitiv tiplər istisna olmaqla istənilən tip göstərilə bilər. Primitiv tipləri onların sarmalayıcı (wrapper) tipləri ilə əvəz etməli olacaqsınız.

Nümunə:

ArrayList<Integer> numbers = new ArrayList<Integer>();      // int
ArrayList<Double> fees = new ArrayList<Double>();            // double
ArrayList<Boolean> yesList = new ArrayList<Boolean>();       // boolean
ArrayList<Character> chars = new ArrayList<Character>();     // char

Bizim ArrayList elementlərə müraciət üçün [index] dəstəkləmir, lakin bütün ehtiyaclarınızı qarşılamaq üçün xüsusi metodları var. Gəlin ən maraqlılarından keçək.

2. Metod add(element) — elementin əlavə edilməsi

Siyahı ilə etdiyimiz ilk şey — ona məlumat əlavə etməkdir. Bunun üçün add metodu xidmət edir. O, elementi siyahının sonuna qoyur.

ArrayList<String> todo = new ArrayList<>(); // tapşırıqlar siyahısı
todo.add("ArrayList-i öyrənmək");
todo.add("Çay dəmləmək");
todo.add("Gəzintiyə çıxmaq");

Bu üç sətirdən sonra bizdə üç sətirdən ibarət siyahı var. Massivdən fərqli olaraq, əvvəlcədən ölçü göstərməyə ehtiyac yoxdur — əlavə etdikcə özü böyüyür.

Çox rahatdır: boş siyahıdan başlamaq və istifadəçinin hərəkətlərindən və ya proqramın giriş məlumatlarından asılı olaraq onu tədricən doldurmaq olar.

3. Metod get(index) — indeks üzrə giriş

Siyahının hər bir elementinin öz sıra nömrəsi — indeksi var. İndeksləmə həmişə sıfırdan başlayır. Yəni birinci elementin nömrəsi 0, ikinci 1 və s.

Elementi nömrə ilə almaq istəyiriksə, get metodundan istifadə edirik.

String task = todo.get(1);
System.out.println("İkinci tapşırıq: " + task);

Çıxış:

İkinci tapşırıq: Çay dəmləmək

Vacibdir: mövcud olmayan indeksə müraciət etsəniz (məsələn, üç elementli siyahıda todo.get(10)), proqram IndexOutOfBoundsException səhvini verəcək. Ona görə ya indeksə əmin olun, ya da siyahının ölçüsünü size() vasitəsilə yoxlayın.

4. Metod set(index, element) — elementin əvəz edilməsi

Bəzən siyahıdakı elementi əvəzləmək lazım olur. Bu halda silib yenidən əlavə etməyə ehtiyac yoxdur — set metodundan istifadə etmək kifayətdir.

todo.set(1, "Qəhvə hazırlamaq"); 
System.out.println("İndi ikinci tapşırıq: " + todo.get(1));

Çıxış:

İndi ikinci tapşırıq: Qəhvə hazırlamaq

Beləliklə, set — siyahını “uçuş zamanı” yeniləmək üsuludur.

5. Metod remove(index) — elementin silinməsi

Elementi ArrayList-dən indeks üzrə silmək olar.

todo.remove(0); 
System.out.println("Birinci tapşırıq indi: " + todo.get(0));

Çıxış:

Birinci tapşırıq indi: Qəhvə hazırlamaq

Birinci elementi sildik (indeks 0). İndi isə ikinci birinci oldu, üçüncü isə ikinci. Vacib məqam: silmədən sonra siyahının elementləri sürüşür.

Bu, bəzən yeni başlayanlar üçün gözlənilməz ola bilər. Həmişə nəzərə alın ki, silmədən sonra indekslər yenidən hesablanır.

6. Metod size() — siyahının ölçüsünü öyrənmək

size metodu siyahıdakı elementlərin sayını qaytarır. Bu, massivlərdəki length xüsusiyyətinə bənzəyir, lakin ArrayList-də bu — metoddur.

System.out.println("Tapşırıqların sayı: " + todo.size());

Çıxış:

Tapşırıqların sayı: 2

Çox vaxt size bütün elementləri dövr etmək üçün sikllərdə istifadə olunur:

for (int i = 0; i < todo.size(); i++) 
{
    System.out.println(todo.get(i));
}

7. Metod contains(element) — mövcudluğun yoxlanması

Siyahıda lazım olan elementin olub-olmadığını öyrənmək üçün contains-dən istifadə etmək olar. Bu metod true və ya false qaytarır.

System.out.println(todo.contains("Gəzintiyə çıxmaq"));
System.out.println(todo.contains("Çay dəmləmək"));

Çıxış:

true
false

Bu metod çox faydalıdır — dublikatlardan qaçmaq və ya “siyahıda belə bir element var?” şərtini yoxlamaq istəyəndə.

8. Elementlərin dövr edilməsi

Siyahıdan keçməyin iki yolu var.

İndeksə əsaslanan dövr

Elementin nömrəsi sizin üçün vacibdirsə, bu üsul uyğundur.

for (int i = 0; i < todo.size(); i++) 
{
    System.out.println(i + ": " + todo.get(i));
}

for-each dövrü

Əgər nömrə lazım deyilsə və sadəcə bütün elementlərə baxmaq istəyirsinizsə — for-each dövründən istifadə edin.

for (String task : todo) 
{
    System.out.println("Tapşırıq: " + task);
}

Belə dövr daha qısadır və oxunması asandır.

9. Təcrübə: Tətbiqinizdə ArrayList

Gəlin əlavə edilə bilən və ekrana çıxarılan bir tapşırıqlar siyahısı yaradaq:

import java.util.ArrayList;
import java.util.Scanner;

public class TodoApp 
{
    public static void main(String[] args) 
    {
        ArrayList<String> todo = new ArrayList<>();
        Scanner console = new Scanner(System.in);

        while (true) 
        {
            System.out.print("Tapşırıq daxil edin (çıxmaq üçün boş sətir daxil edin): ");
            String task = console.nextLine();
            if (task.isEmpty()) break;
            todo.add(task);
        }

        System.out.println("Sizin tapşırıqlar siyahınız:");
        for (int i = 0; i < todo.size(); i++) 
        {
            System.out.println((i + 1) + ". " + todo.get(i));
        }
    }
}

Ümid edirəm, bizim “sonsuz” massiv xoşunuza gəldi. O, tanış olduğunuz ilk Java kolleksiyasıdır. Düşünürəm, digərlərini də bəyənəcəksiniz.

1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Elementin əlavə edilməsi və əldə edilməsi
Elementin əlavə edilməsi və əldə edilməsi
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Elementlərin əvəz edilməsi və silinməsi
Elementlərin əvəz edilməsi və silinməsi
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Siyahıda elementin olub-olmadığının yoxlanması
Siyahıda elementin olub-olmadığının yoxlanması
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
İstifadəçinin daxil etdiyi tapşırıqların siyahısı
İstifadəçinin daxil etdiyi tapşırıqların siyahısı
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION