Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Char array com ArrayList

Ola, tenho o exercício abaixo que o objetivo é reverter uma String e já está funcionando , porém queria usar um ArrayList sem ter que usar um laço para inserir letra por letra. Teria alguma forma?

class ReverseString {

    String reverse(String inputString) {
        String newString="";

        char[] arrayString = inputString.toCharArray();

        for (int i = arrayString.length -1; i >=0; i--){
            newString += arrayString[i];
        }
        return newString;
    }
}
1 resposta
solução!

Boa tarde, Thiago!

Existem formas mais rebuscadas de pegar esse array de char, transformar ele num ArrayList e, por fim, inverter a ordem dele. Vou deixar aqui um exemplo apenas a título de curiosidade, mas pelo que pude ver no seu perfil, aparentemente vc está começando sua caminhada no mundo Java, então não se preocupe se não conseguir entender completamente o código!

public class TesteInverteString {

    public static void main(String[] args) {
        String newString="";
        String original = "Gabriel Leite";

        List<Character> lista = original.chars()
                                        .mapToObj(letra -> (char) letra)
                                        .collect(Collectors.toList());

        System.out.println(lista); // lista original.
        Collections.reverse(lista); // inverte a lista.
        System.out.println(lista); // lista invertida.

    }

}

Basicamente, o que o código faz é pegar a String original, transformar para uma IntStream que é uma estrutura nova que surgiu na versão 8 do Java, depois transforma cada item desse IntStream para um char e, por fim, coleta todos os itens para uma lista de Character.

No entanto, perceba que embora não tenha aparecido nenhum laço de repetição, implicitamente há iterações sendo feitas, como por exemplo, quando da transformação dos itens do IntStream para char! Pois o que o método mapToObj() faz é justamente passar por cada um dos itens e aplicar uma transformação.

Conclusão: A sua solução é mto boa! E qualquer outra solução para chegar no mesmo objetivo tbm vai precisar de uma iteração, mesmo que seja por baixo dos panos!

Grande abraço e bons estudos!