ii

ilOdhlI ilOdh08/01/2023 12:00
Compartilhe

Vetorização inversa

  • #Java

Resolvi compartilhar uma forma interessante de inverter vetores, sem recorrer aos laços WHILE, FOR, ....

Segue o código abaixo:

package com.ws;

import java.util.*;

public class InverseVetor {
  public static void main(String[] args) {
      int[] vetor = {2,-5,-4,-6,0,1};
      List<Integer> lista = new ArrayList<>();

      System.out.println("Vetor original: \n2,-5,-4,-6,0,1");
      System.out.println("Vetor inverso: ");

      /*
       * transforma o vetor em um stream
       * depois utilizo o laço foreach na coleção para preencher a lista.
       */
      Arrays.stream(vetor).forEach(v -> lista.add(v));

      //aqui acontece a inversão da coleção/lista
      Collections.reverse(lista);

      //Imprime no console a lista inversa
      lista.forEach(l -> System.out.print(l.toString().concat(",")));
  }
}
Compartilhe
Comentários (1)
Adam Cardoso
Adam Cardoso - 08/01/2023 16:41

Podemos até dar uma melhorada no código, ao invés de usarmos "for", podemos usar o método "forEach" da classe "Arrays". Segue exemplo: 


System.out.print("Vetor invertido: ");

Arrays.stream(vetorInvertido).forEach(v -> System.out.print(v + ","));



E da classe "Arrays", podemos utilizar o método "reverse" também para inverter o vetor.


int[] vetorInvertido = Arrays.copyOf(vetor, vetor.length);

Arrays.reverse(vetorInvertido);


System.out.println("Vetor invertido: " + Arrays.toString(vetorInvertido));