Hytale Modding
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ām

2. 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 sloti

Piekļ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

Indekss012
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]); // 90

Masīva Garums

Izmanto '.length', lai iegūtu masīva garumu:

int[] punkti = {45, 67, 89, 92, 55}; System.out.println(punkti.garums); // 5
Garums 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]); // 8

Vizuāla Reprezentācija

012
0123
1456
2789

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];
}