Hytale Modding
Fundamentos do Java

05 - Vetores

Aprenda a armazenar e gerenciar coleções de dados usando vetores.

Vetores permitem que você armazene vários valores do mesmo tipo em uma única variável. Pense em um vetor como uma fileira de caixas, cada uma segurando um item.

Criando Vetores

Método 1: Declarar e Inicializar separadamente

int[] números; // Declare
números = new int[5]; // Crie um vetor com 5 espaços

Método 2: Tudo de uma vez

int[] numbers = new int[5];

Método 3: Com os valores iniciais

int[] numbers = {10, 20, 30, 40, 50};
Tamanho do Vetor

Quando você cria um vetor, seu tamanho é fixo. Você não pode adicionar elementos além do limite definido!

int[] inventory = new int[9]; // Sempre tem exatamente 9 espaços

Acessando elementos do vetor

Arrays usam números índice a partir de 0:

String[] players = {"Alice", "Bob", "Charlie"};

System.out.println(players[0]); // "Alice"
System.out.println(players[1]); // "Bob"
System.out.println(players[2]); // "Charlie"

Representação Visual

Índice012
Valor"Alice""Bob""Charlie"

Modificando os Valores do Vetor

int[] saude = {100, 80, 90};

saude[1] = 60; // Altera a saúde do Bob para 60

System.out.println(saude[0]); // 100
System.out.println(saude[1]); // 60
System.out.println(saude[2]); // 90

Comprimento do Vetor

Use .length para obter o tamanho de um vetor:

int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // 5
Comprimento Não é um Método

Observe que não há parênteses! É array.length, não array.length().

Repetição Sob Vetores

Usando o Laço For

String[] items = {"Sword", "Shield", "Potion"};

for (int i = 0; i < items.length; i++) {
    System.out.println(items[i]);
}

Usando o Laço For Aprimorado (For-Each)

String[] items = {"Sword", "Shield", "Potion"};

for (String item : items) {
    System.out.println(item);
}
Laço For Aprimorado

O laço aprimorado para é mais simples e mais seguro, mas você não pode modificar a vetor ou saber o índice atual.

// Quando você precisa do índice
for (int i = 0; i < items.length; i++) {
    System.out.println(i + ": " + items[i]);
}

// Quando você só precisa dos valores
for (String item : items) {
    System.out.println(item);
}

Vetores Multidimensionais

Vetores podem conter outros vetores, criando uma grid:

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

Representação Visual

012
0123
1456
2789

Repetição Sob Vetores 2D

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();
}

Exemplos práticos

Sistema de Inventário de Jogador

String[] inventory = new String[9]; // 9 slots de hotbat

// Adiciona itens
inventory[0] = "Diamond Sword";
inventory[1] = "Shield";
inventory[8] = "Food";

// Mostrar inventário
for (int i = 0; i < inventory.length; i++) {
    if (inventory[i] != null) {
        System.out.println("Slot " + i + ": " + inventory[i]);
    } else {
        System.out.println("Slot " + i + ": Empty");
    }
}

Encontrar a maior pontuação

int[] scores = {45, 92, 67, 88, 55, 71};
int highest = scores[0];

for (int i = 1; i < scores.length; i++) {
    if (scores[i] > highest) {
        highest = scores[i];
    }
}

System.out.println("Maior pontuação: " + highest);

Calcular média

double[] temperatures = {23.5, 25.0, 22.8, 24.3, 26.1};
double sum = 0;

for (double temp : temperatures) {
    sum += temp;
}

double average = sum / temperatures.length;
System.out.println("Temperatura média " + average);

Grid de Blocos (Matriz 2D)

String[][] terrain = new String[5][5];

// Preencher com grama
for (int x = 0; x < 5; x++) {
    for (int z = 0; z < 5; z++) {
        terrain[x][z] = "grass";
    }
}

// Botar um pouco de pedra
terrain[2][2] = "stone";
terrain[1][3] = "stone";

// Mostrar grid
for (int x = 0; x < terrain.length; x++) {
    for (int z = 0; z < terrain[x].length; z++) {
        System.out.print(terrain[x][z] + " ");
    }
    System.out.println();
}

Operações Comuns de Vetor

Copiar um Vetor

int[] original = {1, 2, 3, 4, 5};
int[] copy = original.clone();

// Ou manualmente
int[] copy2 = new int[original.length];
for (int i = 0; i < original.length; i++) {
    copy2[i] = original[i];
}

Procurar por um valor

String[] items = {"Sword", "Shield", "Potion", "Bow"};
String target = "Potion";
int foundIndex = -1;

for (int i = 0; i < items.length; i++) {
    if (items[i].equals(target)) {
        foundIndex = i;
        break;
    }
}

if (foundIndex != -1) {
    System.out.println("Encontrado no índice: " + foundIndex);
} else {
    System.out.println("Não encontrado");
}

Contar ocorrências

String[] blocks = {"stone", "dirt", "stone", "grass", "stone"};
String searchFor = "stone";
int count = 0;

for (String block : blocks) {
    if (block.equals(searchFor)) {
        count++;
    }
}

System.out.println(searchFor + " aparece " + count + " vezes");

Limitações do Vetor

Tamanho fixo

Vetores não podem crescer ou diminuir. Se você precisar de flexibilidade, você aprenderá mais tarde sobre ArrayList!

int[] numbers = new int[5];
// Não pode adicionar um 6º elemento!

// Se voce precisar de mais espaço, crie um nova array
int[] bigger = new int[10];
for (int i = 0; i < numbers.length; i++) {
    bigger[i] = numbers[i];
}