Iterando por arrays multidimensionais

Java para Iniciantes (Oracle) - Aug 10 - - Dev Community

Compatibilidade com Arrays Multidimensionais:

  • O laço for-each também pode ser usado para iterar arrays multidimensionais em Java.
  • Em Java, arrays multidimensionais são tratados como arrays de arrays (e.g., um array bidimensional é um array de arrays unidimensionais).

Iteração em Arrays Multidimensionais:

  • Cada iteração do laço for-each em um array multidimensional recupera um array de dimensão N-1.
  • A variável de iteração no laço externo deve ser compatível com o tipo de array que está sendo obtido.

Exemplo de Código:

class ForEach2 {
  public static void main(String args[]) {
    int sum = 0;
    int nums[][] = new int[3][5];

    // Preenchendo o array nums com valores
    for(int i = 0; i < 3; i++)
      for(int j = 0; j < 5; j++)
        nums[i][j] = (i+1)*(j+1);

    // Usando o laço for-each para iterar e somar valores
    for(int x[] : nums) {
      for(int y : x) {
        System.out.println("Value is: " + y);
        sum += y;
      }
    }
    System.out.println("Summation: " + sum);
  }
}

Enter fullscreen mode Exit fullscreen mode

Saída: =
O programa exibe cada valor do array nums e a soma total dos valores.

Detalhes Importantes:
A variável x no laço externo é declarada como um array unidimensional (int x[]), pois cada iteração recupera um array unidimensional de nums.
O laço interno itera sobre os elementos individuais desses arrays unidimensionais.

Aplicações do Laço for-each:
O laço for-each é útil em algoritmos que necessitam percorrer um array sequencialmente, como em buscas lineares, cálculos de média, ou busca de valores mínimos e máximos.

Exemplo de Busca em Array:

class Search {
  public static void main(String args[]) {
    int nums[] = { 6, 8, 3, 7, 5, 6, 1, 4 };
    int val = 5;
    boolean found = false;

    // Usando o laço for-each para procurar um valor no array
    for(int x : nums) {
      if(x == val) {
        found = true;
        break;
      }
    }

    if(found)
      System.out.println("Value found!");
  }
}

Enter fullscreen mode Exit fullscreen mode

Saída: O programa imprime "Value found!" se o valor val for encontrado no array nums.

Limitações:
O laço for-each só percorre o array do início ao fim, o que pode parecer limitante, mas é ideal para muitos algoritmos como buscas e cálculos simples. Ou seja, de forma crescente de index. Se quiser do fim pro inicio não tem como.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player