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:
Yaxshi, qanday qilib bir o'lchamli massivlar yaratishni bilasiz 🙂
Natijaviy kod shunday ko'rinadi:
|
Ikki oʻlchamli massiv Nolinchi satr — 10 elementdan iborat massivBirinchi 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:
|
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 | |
| Ikki satr massiv qayta ishlangan | |
| Uchta satr massiv qayta ishlangan | |
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.
GO TO FULL VERSION