Pesquisa de site

Use matrizes em Java


Em vez de rastrear dezenas de variáveis individuais, use um array em Java para coletar e armazenar dados de forma estruturada.

Na linguagem de programação Java, um array é uma coleção ordenada de dados. Você pode usar um array para armazenar informações de forma estruturada. É útil conhecer as diversas maneiras pelas quais você pode recuperar esses dados quando precisar deles. É importante notar que em Java, um array associativo (também chamado de dicionário em algumas linguagens) é chamado de hashmap. Este artigo não cobre hashmaps, mas você pode ler tudo sobre eles em meu artigo Usando um hashmap em Java.

Criando uma matriz de strings

O array mais simples em Java é um array unidimensional. É essencialmente uma lista. Para uma matriz de strings:

package com.opensource.example;

public class Example {

    public static void main(String[] args) {
        String[] myArray = {"foo", "bar", "baz"};

        // retrieval
        System.out.println(myArray[0]);
        System.out.println(myArray[1]);
        System.out.println(myArray[2]);
    }
}

Observe que quando você recupera os dados de um array, o índice começa em 0, não em 1. Em outras palavras, um array contendo três valores é numerado de 0 a 2.

Alternativamente, você pode criar uma matriz e preenchê-la mais tarde. Ao fazer isso, entretanto, você também deve informar ao Java o comprimento do array. O “comprimento”, neste contexto, refere-se ao número de itens que um array pode conter.

package com.opensource.example;

public class Example {
    public static void main(String[] args) {
        String[] myArray = new String[3];

        System.out.println("Empty myArray created.");

        // populate the array
        myArray[0] = "foo";
        myArray[1] = "bar";
        myArray[2] = "baz";

        // retrieval
        System.out.println(myArray[0]);
        System.out.println(myArray[1]);
        System.out.println(myArray[2]);
    }
}

Supondo que o código esteja salvo em um arquivo chamado main.java, execute-o usando o comando java:

$ java ./main.java
foo
bar
baz

Para criar um array de números inteiros, defina o tipo de dados como int em vez de String:

package com.opensource.example;

public class Example {
    public static void main(String[] args) {
      int[] myArray = { 1, 2, 3 };

      System.out.println(myArray[0]);
      System.out.println(myArray[1]);
      System.out.println(myArray[2]);
    }
}

Execute o código:

$ java ./main.java
1
2
3

Iterando sobre um array

Depois de armazenar os dados em um array, você provavelmente pretende recuperá-los em algum momento. A maneira mais direta de ver todos os dados em um array é criar um loop for que obtém o comprimento do array usando o método .length e, em seguida, faz um loop sobre o array. um número de vezes igual ao comprimento:

package com.opensource.example;

public class Example {
    public static void main(String[] args) {

        String[] myArray = { "foo", "bar", "baz" };

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

Execute o código:

$ java ./main.java
foo
bar
baz

Matrizes multidimensionais

Um array não precisa ser apenas uma lista simples. Também pode ser uma lista de listas. Isso é chamado de array multidimensional e é bastante intuitivo, desde que você pense nele como um array de arrays:

package com.opensource.example;

public class Example {
    public static void main(String[] args) {
        String[][] myArray = {{ "zombie", "apocalypse" }, { "happy", "halloween" }};
        }
    }
}

Para ver o conteúdo do array, você pode usar um loop for aninhado. Em um array unidimensional, você tinha que obter o comprimento de myArray para que seu loop for soubesse quando parar de iterar no array. Desta vez, você deve obter o comprimento de cada array dentro de myArray. Para simplificar, chamo esses dois arrays de outer e inner, sendo o primeiro myArray e o inner representando cada matriz aninhada:

int outer = myArray.length;
int inner = myArray[1].length;

Depois de ter os dois comprimentos, você os usa como limites do seu loop for:

for (int i = 0; i < outer; i++) {
  for (int j = 0; j < inner; j++) {
    System.out.println(myArray[i][j]);
    }
  }

Aqui está o exemplo de código completo:

package com.opensource.example;

  public class Example {
      String[][] myArray = {{ "foo", "bar" }, { "baz", "qux" }};

      int outer = myArray.length;
      int inner = myArray[1].length;

      for (int i = 0; i < outer; i++) {
         for (int j = 0; j < inner; j++) {
            System.out.println(myArray[i][j]);
            }
        }
    }
}

Execute o código:

$ java ./main.java
zombie
apocalypse
happy
halloween

Matrizes de dados

Às vezes faz mais sentido usar um array Java do que rastrear dezenas de variáveis individuais. Depois de entender como estruturar e recuperar dados em uma linguagem, você poderá gerar dados complexos de maneira organizada e conveniente.

Artigos relacionados: