Java'da Jagged Arrays

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Noto'g'ri massivlar

Java-da dasturchi sifatida siz nafaqat ikki o'lchamli massivning satrlarini o'zgartirishingiz mumkin, balki ushbu massivni o'zingiz xohlaganingizcha tuzishingiz mumkin.

Misol uchun, siz ikki o'lchamli massivning birinchi satrining uzunligi 10, ikkinchi satrining uzunligi esa 50 bo'lishini xohlaysiz. Buni qilish mumkinmi? Ha, mumkin.

Dastlab, "konteynerlar konteyneri" — massiv satrlariga havolalarni saqlaydigan birinchi massivni yaratish kerak. Buni shunday amalga oshiramiz:

int[][] name = new int[height][];

Siz faqat ikkinchi parametrni ko'rsatmasdan qoldirasiz, va Java-mashina faqat "konteynerlar konteyneri" yaratadi. Ushbu kod bajarilgandan so'ng xotirada nima bo'ladi:

Java'da jagged arrays

Yaxshi, qanday qilib bir o'lchamli massivlar yaratishni bilasiz 🙂

Natijaviy kod shunday ko'rinadi:

// Muhim ma'lumotlar matritsasi
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50];
Ikki oʻlchamli massiv

Nolinchi satr — 10 elementdan iborat massiv
Birinchi satr — 50 elementdan iborat massiv.

Yaqinda siz shunday deb ataladigan "noto'g'ri massiv" yaratdingiz.

Nima, agar biz ushbu massivning barcha elementlarini ekranga chiqarishni istasak, massivning length xususiyati bizga juda mos keladi: massivning satr uzunliklari har xil axir.

Aytgancha, bizning misolda "konteynerlar konteyneri" uzunligini qanday bilish mumkin? Bu ham ob'ekt-massiv, demak, uning uzunligi bor. To'g'ri javob — matrix.length.

A satr-massivlar uchunchi? matrix[0].length



2. Ikki o'lchamli massiv bilan ishlash

Misol uchun, ekranga ikki o'lchamli massivni chiqarishni istaysiz. Buni qanday amalga oshirish kerak?

Kodimiz taxminan shunday ko'rinadi:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
for (int i = 0; i < matrix.length; i++) {
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
Massivni yaratish
Massivni qiymatlar bilan to'ldirish


Massivning satrlari bo'yicha tashqi tsikl — massivning satrlarini bosqichma-bosqich qidiradi.
Yacheykalar bo'yicha ichki tsikl — bir satrning yacheykalarini qidiradi.

Sizga ikkita ichki tsikl kerak bo'ladi. Birinchisini tashqi deb ataymiz, ikkinchisini esa — ichki.

Tashqi tsiklda (o'zgaruvchi i) biz o'z navbatida ikki o'lchamli massivimizni tashkil etadigan barcha massiv-satrlarini aylanib o'tishimiz kerak. Har bir i o'zgaruvchisining qiymati massivning shu raqamli satriga to'g'ri keladi.

Ichki tsiklda (o'zgaruvchi j) biz massiv-satrlarning barcha yacheykalarini qidiramiz. Ichki tsikl ishlashi natijasida ekranga bir satr massivning qiymatlari hosil bo'ladi.

Ekranda nima namoyon etiladi:

Bir satr massiv qayta ishlangan
1 2 3 4 5 6 
Ikki satr massiv qayta ishlangan
1 2 3 4 5 6
1 2 3 
Uchta satr massiv qayta ishlangan
1 2 3 4 5 6
1 2 3
1 


3. Ko'p o'lchamli massivlar

Va yana bir qiziqarli fakt: agar ikki o'lchamli massiv yaratish mumkin bo'lsa, uch o'lchamli massiv ham yaratish mumkinmi?

Ha, har qanday o'lchamdagi massivni yaratish mumkin. Bunday massivlar "ko'p o'lchamli" deb ataladi.

Keling, qiziqarli bo'lishi uchun 4 o'lchamli ko'p o'lchamli massivni yaratamiz.

 int[][][][] matrix = new int[2][3][4][5];

Juda oddiy kod, to'g'rimi?

Agar uni qo'lda yaratsak-chi?

int[][][][] matrix;
matrix = new int[2][][][];                // "havo'lalar havo'lalar havo'lalarini" uzunligi 2 bo'lgan massivni yaratayapmiz
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];             // "havo'lalar havo'lalari" uzunligi 3 bo'lgan massivni yaratayapmiz
  for (int j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];          // uzunligi 4 bo'lgan havo'lalar massivi yaratish
    for (int k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];       // uzunligi 5 bo'lgan int massivlar yaratish
  }
}

Va bu faqat massivni yaratish! U bilan qanday ishlash haqida ham o'ylab ko'rish kerak.

Bonus vazifa — uch o'lchamli massivning barcha qiymatlarini ekranga chiqaruvchi kodni yozish.


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