Java Pamati
05 - Masīvi
Iemācies glabāt un pārvaldīt datu kolekcijas, izmantojot masīvus.
Masīvi ļauj saglabāt vairākas viena tipa vērtības vienā mainīgajā. Iedomājieties masīvu kā lodziņu rindu, katrā no tām ir viens vienums.
Masīvu Izveide
1. Metode: Deklarē un Inicializē Atsevišķi
int[] skaitli; // Deklarē
skaitli = new int[5]; // Izveido masīvu ar 5 vietām2. Metode: Viss vienlaikus
int[] skaitli = new int[5];3. Metode: Ar Sākotnējām Vērtībām
int[] skaitli = {10, 20, 30, 40, 50};Masīva Lielums
Tiklīdz masīvs ir izveidots, tā lielums ir fiksēts Vēlāk tam nevar pievienot vai noņemt elementus!
int[] inventārs = new int ; Vienmēr ir tieši 9 slotiPiekļuve Masīva Elementiem
Masīvi izmanto indeksu skaitļus, sākot no 0:
String[] speletaji = {"Alice", "Bob", "Charlie"};
System.out.println(speletaji[0]); // "Alice"
System.out.println(speletaji[1]); // "Bob"
System.out.println(speletaji[2]); // "Charlie"Vizuāls Attēlojums
| Indekss | 0 | 1 | 2 |
|---|---|---|---|
| Vērtība | "Alice" | "Bob" | "Charlie" |
Masīva Vērtību Modificēšana
int[] veseliba = {100, 80, 90};
veseliba[1] = 60; // Maina Bob veselību uz 60
System.out.println(veseliba[0]); // 100
System.out.println(veseliba[1]); // 60
System.out.println(veseliba[2]); // 90Masīva Garums
Izmanto '.length', lai iegūtu masīva garumu:
int[] punkti = {45, 67, 89, 92, 55}; System.out.println(punkti.garums); // 5Garums nav Metode
Ievēro, ka nav iekavu! Tātad array.length, nevis array.length().
Masīvu Ciklēšana
Izmantojot For Loop
String[] prieksmeti = {"Zobens", "Vairogs", "Dzira"};
for (int i = 0; i < prieksmeti.length; i++) {
System.out.println(prieksmeti[i]);
}Uzlabots For Loop (For-Each)
String[] prieksmeti = {"Zobens", "Vairogs", "Dzira"};
for (String prieksmets : prieksmeti) {
System.out.println(prieksmets);
}Uzlaboti For Loop
Uzlabotie For Loop ir vienkāršāki un drošāki, bet tiem nevar modificēt masīvu vai zināt pašreizējo indeksu.
// Kad vajag zināt indeksu
for (int i = 0; i < prieksmeti.length; i++) {
System.out.println(i + ": " + prieksmeti[i]);
}
// Kad vajag tikai vērtību
for (String prieksmets : prieksmeti) {
System.out.println(prieksmets);
}Daudzdimensiju Masīvi
Masīvi var saturēt citus masīvus, izveidojot režģi:
int[][] grid = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(grid[0][0]); // 1
System.out.println(grid[1][2]); // 6
System.out.println(grid[2][1]); // 8Vizuāla Reprezentācija
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1 | 2 | 3 |
| 1 | 4 | 5 | 6 |
| 2 | 7 | 8 | 9 |
Ciklēšana Cauri 2D Masīviem
int[][] grid = {
{1, 2, 3},
{4, 5, 6}
};
for (int row = 0; row < grid.length; row++) {
for (int col = 0; col < grid[row].length; col++) {
System.out.print(grid[row][col] + " ");
}
System.out.println();
}Praktiski Piemēri
Spēlētāja Inventāra Sistēma
String[] inventars = new String[9]; // 9 ātrās pieejas sloti
// Pievieno priekšmetus
inventory[0] = "Dimanta Zobens";
inventory[1] = "Vairogs";
inventory[8] = "Ēdiens";
// Parādi inventāru
for (int i = 0; i < inventars.length; i++) {
if (inventars[i] != null) {
System.out.println("Slots " + i + ": " + inventars[i]);
} else {
System.out.println("Slots " + i + ": Tukšs");
}
}Atrodi Augstāko Rezultātu
int[] rezultati = {45, 92, 67, 88, 55, 71};
int augstakie = rezultati[0];
for (int i = 1; i < rezultati.length; i++) {
if (rezultati[i] > augstakie) {
augstakie = rezultati[i];
}
}
System.out.println("Augstākais rezultāts: " + augstakie);Aprēķināt Vidējo
double[] temperaturas = {23.5, 25.0, 22.8, 24.3, 26.1};
double sum = 0;
for (double pagaidu : temperaturas) {
sum += pagaidu;
}
double videja = sum / temperaturas.length;
System.out.println("Vidējā temperatūra: " + videja);Bloku Režģis (2D Masīvs)
String[][] reljefs = new String[5][5];
// Aizpildīt ar zāli
for (int x = 0; x < 5; x++) {
for (int z = 0; z < 5; z++) {
reljefs[x][z] = "zāle";
}
}
// Novietot pāris akmeņus
terrain[2][2] = "akmens";
terrain[1][3] = "akmens";
// Parādīt režģi
for (int x = 0; x < reljefs.length; x++) {
for (int z = 0; z < reljefs[x].length; z++) {
System.out.print(reljefs[x][z] + " ");
}
System.out.println();
}Parastās Masīva Operācijas
Kopēt Masīvu
int[] originalie = {1, 2, 3, 4, 5};
int[] kopija = originalie.clone();
// Vai manuāli
int[] kopija2 = new int[originalie.length];
for (int i = 0; i < originalie.length; i++) {
kopija2[i] = originalie[i];
}Vērtības Meklēšana
String[] prieksmeti = {"Zobens", "Vairogs", "Dzira", "Loks"};
String merkis = "Dzira";
int atrastaisIndekss = -1;
for (int i = 0; i < prieksmeti.length; i++) {
if (prieksmeti[i].equals(merkis)) {
atrastaisIndekss = i;
break;
}
}
if (atrastaisIndekss != -1) {
System.out.println("Atrasts indeksā: " + atrastaisIndekss);
} else {
System.out.println("Nav atrasts");
}Skaitīt Gadījumus
String[] bloki = {"akmens", "zeme", "akmens", "zāle", "akmens"};
String meklet = "akmens";
int skaits = 0;
for (String bloks : bloki) {
if (bloks.equals(meklet)) {
skaits++;
}
}
System.out.println(meklet + " parādas " + skaits + " reizes");Masīva Limitācijas
Fiksēts Izmērs
Masīvi nevar palielināties vai samazināties Ja ir nepieciešama elastība, tad uzzināsi par "ArrayList" vēlāk!
int[] skaitli = new int[5];
// Nevar pievienot sesto elementu!
// Ja vajag vairāk vietas, izveido jaunu masīvu
int[] vairakSkaitli = new int[10];
for (int i = 0; i < skaitli.length; i++) {
vairakSkaitli[i] = skaitli[i];
}