Dominando Arrays em Java: Guia Completo para Manipulação Eficiente de Dados
O Java fornece uma estrutura de dados chamada array, que armazena uma coleção sequencial de tamanho fixo de elementos do mesmo tipo. Um array é usado para armazenar uma coleção de dados, mas muitas vezes é mais útil pensar em um array como uma coleção de variáveis do mesmo tipo.
Em vez de declarar variáveis individuais, como numero0, numero1, ..., e numero99, você declara uma variável de array, como numeros, e usa numeros[0], numeros[1], ..., numeros[99] para representar variáveis individuais.
Este tutorial apresenta como declarar variáveis de array, criar arrays e processar arrays usando variáveis indexadas.
Declarando Variáveis de Array
Para usar um array em um programa, você deve declarar uma variável para referenciar o array e especificar o tipo de array que a variável pode referenciar. Aqui está a sintaxe para declarar uma variável de array:
Sintaxe
tipoDado[] nomeVariavelArray; // forma preferida // ou tipoDado nomeVariavelArray[]; // funciona, mas não é a forma preferida
Nota: O estilo tipoDado[] nomeVariavelArray é preferido. O estilo tipoDado nomeVariavelArray[] vem da linguagem C/C++ e foi adotado no Java para acomodar programadores C/C++.
Exemplo
Os seguintes trechos de código são exemplos desta sintaxe:
double[] minhaLista; // forma preferida // ou double minhaLista[]; // funciona, mas não é a forma preferida
Criando Arrays
Você pode criar um array usando o operador new com a seguinte sintaxe:
Sintaxe
nomeVariavelArray = new tipoDado[tamanhoArray];
A declaração acima faz duas coisas:
Cria um array usando
new tipoDado[tamanhoArray].Atribui a referência do array recém-criado à variável nomeVariavelArray.
Declarar uma variável de array, criar um array e atribuir a referência do array à variável pode ser combinado em uma única instrução:
tipoDado[] nomeVariavelArray = new tipoDado[tamanhoArray];
Alternativamente, você pode criar arrays da seguinte forma:
tipoDado[] nomeVariavelArray = {valor0, valor1, ..., valork};
Os elementos do array são acessados através do índice. Os índices de array são baseados em 0; ou seja, eles começam de 0 até nomeVariavelArray.length-1.
Exemplo
A seguinte instrução declara uma variável de array, minhaLista, cria um array de 10 elementos do tipo double e atribui sua referência a minhaLista:
double[] minhaLista = new double[10];
A figura a seguir representa o array minhaLista. Aqui, minhaLista contém dez valores double e os índices vão de 0 a 9.
Processando Arrays
Ao processar elementos de array, frequentemente usamos o loop for ou o loop foreach (for-each), pois todos os elementos em um array são do mesmo tipo e o tamanho do array é conhecido.
Exemplo
Aqui está um exemplo completo mostrando como criar, inicializar e processar arrays:
public class TesteArray {
public static void main(String[] args) {
double[] minhaLista = {1.9, 2.9, 3.4, 3.5};
// Imprime todos os elementos do array
for (int i = 0; i < minhaLista.length; i++) {
System.out.println(minhaLista[i] + " ");
}
// Somando todos os elementos
double total = 0;
for (int i = 0; i < minhaLista.length; i++) {
total += minhaLista[i];
}
System.out.println("Total é " + total);
// Encontrando o maior elemento
double max = minhaLista[0];
for (int i = 1; i < minhaLista.length; i++) {
if (minhaLista[i] > max) max = minhaLista[i];
}
System.out.println("Máximo é " + max);
}
}
Isso produzirá o seguinte resultado:
Saída
1.9 2.9 3.4 3.5 Total é 11.7 Máximo é 3.5
O Loop foreach
O JDK 1.5 introduziu um novo loop for conhecido como loop foreach ou loop for aprimorado, que permite percorrer o array completo sequencialmente sem usar uma variável de índice.
Exemplo
O código a seguir exibe todos os elementos no array minhaLista:
public class TesteArray {
public static void main(String[] args) {
double[] minhaLista = {1.9, 2.9, 3.4, 3.5};
// Imprime todos os elementos do array
for (double elemento : minhaLista) {
System.out.println(elemento);
}
}
}
Isso produzirá o seguinte resultado:
Saída
1.9 2.9 3.4 3.5
Passando Arrays para Métodos
Assim como você pode passar valores de tipos primitivos para métodos, também pode passar arrays para métodos. Por exemplo, o método a seguir exibe os elementos em um array int:
Exemplo
public static void imprimirArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
Você pode invocá-lo passando um array. Por exemplo, a seguinte instrução invoca o método imprimirArray para exibir 3, 1, 2, 6, 4 e 2:
Exemplo
imprimirArray(new int[]{3, 1, 2, 6, 4, 2});
Retornando um Array de um Método
Um método também pode retornar um array. Por exemplo, o método a seguir retorna um array que é a inversão de outro array:
Exemplo
public static int[] inverter(int[] lista) {
int[] resultado = new int[lista.length];
for (int i = 0, j = resultado.length - 1; i < lista.length; i++, j--) {
resultado[j] = lista[i];
}
return resultado;
}
A Classe Arrays
A classe java.util.Arrays contém vários métodos estáticos para ordenar e pesquisar arrays, comparar arrays e preencher elementos de array. Esses métodos são sobrecarregados para todos os tipos primitivos.
| Nº | Método e Descrição |
|---|---|
| 1 | public static int binarySearch(Object[] a, Object key) Pesquisa o array especificado de Object (Byte, Int, double, etc.) para o valor especificado usando o algoritmo de busca binária. O array deve ser ordenado antes de fazer esta chamada. Retorna o índice da chave de pesquisa, se estiver contido na lista; caso contrário, retorna (–(ponto de inserção + 1)). |
| 2 | public static boolean equals(long[] a, long[] a2) Retorna true se os dois arrays especificados de longs forem iguais entre si. Dois arrays são considerados iguais se ambos contêm o mesmo número de elementos e todos os pares correspondentes de elementos nos dois arrays são iguais. O mesmo método pode ser usado por todos os outros tipos de dados primitivos (Byte, short, Int, etc.) |
| 3 | public static void fill(int[] a, int val) Atribui o valor int especificado a cada elemento do array especificado de ints. O mesmo método pode ser usado por todos os outros tipos de dados primitivos (Byte, short, Int, etc.) |
| 4 | public static void sort(Object[] a) Ordena o array especificado de objetos em ordem crescente, de acordo com a ordenação natural de seus elementos. O mesmo método pode ser usado por todos os outros tipos de dados primitivos (Byte, short, Int, etc.) |
Java
- Dominando Arrays em C#: Declaração, Inicialização e Operações
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Técnicas de Cópia de Arrays em Java: Guia Completo
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Arrays em C++ Desmistificados: Declaração, Inicialização e Técnicas com Ponteiros
- Dominando Alocação Dinâmica de Arrays em C++: Guia Prático com Exemplos de Código
- Tutorial de Arrays em Java: Declaração, Criação e Inicialização – Código de Exemplo
- Criando Array de Objetos em Java: Guia Passo a Passo