CodeGym /Kurslar /JAVA 25 SELF /Arrays sinfi: sort, fill, copyOf, equals

Arrays sinfi: sort, fill, copyOf, equals

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

1. Giriş

Java-da massivlər — güclü alətdir, lakin əsas sintaksis tez bir zamanda rutin işə dirənir. Köməyə java.util.Arrays sinfi gəlir — massivlərlə işləmək üçün statik metodlar toplusu: çeşidləmə, kopyalama, müqayisə, formatlaşdırılmış çıxış və daha çoxu. Nümunə yaratmağa ehtiyac yoxdur — bütün metodlar statikdir və sinif adı ilə çağrılır.

Metodlardan istifadə etmək üçün faylın əvvəlində import əlavə edin:

import java.util.Arrays;

Importu unutsaq, kompilyator Arrays tapılmadığını («tapılmadı») bildirəcək — bu xəta deyil, importsuz gözlənilən davranışdır.

2. Massivin çeşidlənməsi: Arrays.sort

Arrays.sort necə işləyir

Sintaksis


Arrays.sort(massiv);
Arrays.sort(massiv, nachal’nyyIndeks, konechnyyIndeks);
Bütün massivi və ya alt diapazonu çeşidləmək

Metod «yerində» çeşidləyir — ilkin massivi dəyişir və yeni massiv qaytarmır. Orijinal qaydanı saxlamaq istəyirsiniz? Əvvəlcə massivi kopyalayın.

Nümunə: tam ədədlər massivinin çeşidlənməsi

int[] scores = {5, 2, 9, 1, 7};
Arrays.sort(scores); // Artan qaydada çeşidləyirik

System.out.println("Çeşidlənmiş massiv: " + Arrays.toString(scores));
// Nəticə: [1, 2, 5, 7, 9]

Nümunə: sətir massivinin çeşidlənməsi

String[] names = {"Vasya", "Petya", "Anya", "Igor’"};
Arrays.sort(names);

System.out.println(Arrays.toString(names));
// [Anya, Igor’, Petya, Vasya]

Vacibdir: sətirlər leksikoqrafik (əlifba üzrə), ədədlər isə artan qaydada çeşidlənir.

Massivin bir hissəsinin çeşidlənməsi

int[] arr = {7, 5, 3, 1, 9, 8};
Arrays.sort(arr, 1, 4); // elementləri indeks 1-dən 3-ə qədər (4 daxil edilmir) çeşidləyir

System.out.println(Arrays.toString(arr));
// [7, 1, 3, 5, 9, 8]

Xüsusiyyətlər

  • «Yerində» çeşidləmə: orijinal massiv dəyişir.
  • Ədədlər — artan qaydada, sətirlər — əlifba üzrə.
  • Mürəkkəb obyektlər üçün komparatorlu overloaddan istifadə edin.

3. Massivin doldurulması: Arrays.fill

Sintaksis


Arrays.fill(massiv, znachenie);
Arrays.fill(massiv, nachal’nyyIndeks, konechnyyIndeks, znachenie);
Bütün massivi və ya diapazonu bir dəyərlə doldurmaq

Metod bütün elementləri və ya göstərilən hissəni eyni dəyərlə doldurur.

int[] marks = new int[5];
Arrays.fill(marks, 3); // Bütün elementlər indi 3-ə bərabərdir
System.out.println(Arrays.toString(marks)); // [3, 3, 3, 3, 3]

Massivin bir hissəsini doldurmaq

int[] arr = new int[10];
Arrays.fill(arr, 2, 5, 7); // 2-dən 4-ə qədər indeksləri daxil olmaqla dolduracaq (5 daxil edilmir)
System.out.println(Arrays.toString(arr));
// [0, 0, 7, 7, 7, 0, 0, 0, 0, 0]

Sətir massivinin doldurulması

String[] guests = new String[4];
Arrays.fill(guests, "Boş");
System.out.println(Arrays.toString(guests)); // [Boş, Boş, Boş, Boş]

4. Massivin kopyalanması: Arrays.copyOf və Arrays.copyOfRange

Arrays.copyOf

Sintaksis


Arrays.copyOf(iskhodnyyMassiv, novayaDlina);
Göstərilən uzunluqda yeni nüsxə yaratmaq

Yeni massiv yaradır və elementləri orijinaldan kopyalayır. Yeni uzunluq orijinaldan böyükdürsə, «quyruq» susmaya görə dəyərlərlə doldurulur (0 int üçün, null istinad tipləri üçün).

int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 5);
System.out.println(Arrays.toString(copy)); // [1, 2, 3, 0, 0]

Massivin kiçildilməsi

int[] shortCopy = Arrays.copyOf(original, 2);
System.out.println(Arrays.toString(shortCopy)); // [1, 2]

Arrays.copyOfRange

Sintaksis


Arrays.copyOfRange(iskhodnyyMassiv, nachal’nyyIndeks, konechnyyIndeks);
Alt massivi yeni massivə kopyalamaq
int[] arr = {10, 20, 30, 40, 50};
int[] mid = Arrays.copyOfRange(arr, 1, 4); // İndeks 1-dən 3-ə qədər olan elementləri kopyalayacaq
System.out.println(Arrays.toString(mid)); // [20, 30, 40]

5. Massivlərin müqayisəsi: Arrays.equals və Arrays.deepEquals

Java-da massivləri == ilə müqayisə etmək olmaz — bu, məzmunu deyil, istinadları müqayisə edir:

int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b); // false!

Məzmunu necə müqayisə etməli?


Arrays.equals(massiv1, massiv2);
Arrays.deepEquals(matritsa1, matritsa2);
Səthi və dərin müqayisə
System.out.println(Arrays.equals(a, b)); // true

Birölçülü massivlər üçün Arrays.equals, iki və daha çox ölçülü massivlər üçün isə Arrays.deepEquals istifadə edin.

Nümunə: ikiölçülü massivlərin müqayisəsi

int[][] matrix1 = {{1, 2}, {3, 4}};
int[][] matrix2 = {{1, 2}, {3, 4}};

System.out.println(Arrays.equals(matrix1, matrix2));     // false!
System.out.println(Arrays.deepEquals(matrix1, matrix2)); // true

6. Massivin səliqəli çıxışı: Arrays.toString və Arrays.deepToString

Massivi birbaşa çap etmək oxunmaz sətir verəcək:

int[] arr = {1, 2, 3};
System.out.println(arr); // [I@7a81197d

Sintaksis


Arrays.toString(massiv);
Arrays.deepToString(matritsa);
Birölçülü və çoxölçülü massivlərin formatlaşdırılmış çıxışı
System.out.println(Arrays.toString(arr)); // [1, 2, 3]
int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepToString(matrix)); // [[1, 2], [3, 4]]

7. Arrays sinfi ilə işləyərkən tipik səhvlər

Səhv №1: massivləri == ilə müqayisə etmək
Massivlər — obyektlərdir və == yalnız istinadları müqayisə edir. Dəyərlər eyni olsa belə, nəticə false olacaq. Birölçülü massivlər üçün Arrays.equals, çoxölçülü massivlər üçün isə Arrays.deepEquals istifadə edin.

Səhv №2: çeşidləmənin massivi «yerində» dəyişdiyini unutmaq
Əgər orijinal qayda lazımdırsa, əvvəlcə Arrays.copyOf ilə nüsxə yaradın, sonra nüsxəni çeşidləyin. Əks halda, orijinal qayda itiriləcək.

Səhv №3: sərhədləri Arrays.fill və Arrays.copyOfRange metodlarında səhv başa düşmək
Metodlar yarıaçıq diapazon istifadə edir: sağ sərhəd daxil edilmir. Məsələn, Arrays.fill(arr, 2, 5, 9) indeksləri 2, 3, 4 dolduracaq, amma 5 indeksli elementə toxunmayacaq.

Səhv №4: massivi birbaşa çap etməyə cəhd
System.out.println(arr) çağırışı texniki təqdimatı çap edir. Birölçülü massivlər üçün Arrays.toString, çoxölçülü massivlər üçün Arrays.deepToString istifadə edin.

Səhv №5: çoxölçülü massivləri Arrays.equals ilə müqayisə etmək
Metod yalnız yuxarı səviyyəni (daxili massivlərə istinadları) müqayisə edir. Məzmun üçün Arrays.deepEquals istifadə edin.

1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Yarış nəticələrinin sıralanması 🏃‍♂️
Yarış nəticələrinin sıralanması 🏃‍♂️
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Boş anbar hüceyrələrinin ilkinləşdirilməsi 📦
Boş anbar hüceyrələrinin ilkinləşdirilməsi 📦
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Meteor stansiyasından orta ölçmələrin çıxarılması ☀️
Meteor stansiyasından orta ölçmələrin çıxarılması ☀️
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Gizli giriş kodlarının yoxlanması 🔐
Gizli giriş kodlarının yoxlanması 🔐
1
Sorğu/viktorina
, səviyyə, dərs
Əlçatan deyil
Massivlər
Massivlərlə tanışlıq
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION