Alguém pode ajudar com esses códigos. O exercício(está postado abaixo da minha pergunta) pede basicamente para fazer um algoritmo que inverta uma frase, utilizando String e depois modificando-o para StringBuilder. Mas quero saber se a alteração que eu fiz está correta e também um esclarecimento sobre o lance do objeto na memória, pela questão da String ser imutável e a StringBuilder não. Pois com a alteração que eu fiz, parece que não estou aproveitando a mutabilidade da Builder, mas foi a unica forma que consegui fazer.
PS: A linha que eu marquei como dúvida no código é pelo fato de parecer estar criando objetos String na memória igual o código primeiro código.
14)Dada uma frase, reescreva essa frase com as palavras na ordem invertida. "Socorram-me, subi no ônibus em Marrocos” deve retornar "Marrocos em ônibus no subi Socorram-me,” . Utilize o método split da String para te auxiliar.
- Como você poderia reescrever o método de escrever a String de trás para a frente usando um StringBuilder ?
public void invertOrder(String frase) {
long temp = System.nanoTime();
String[] palavras = frase.split(" ");
for (int i = palavras.length - 1; i >= 0; i--) {
System.out.print(palavras[i]);
System.out.print(" ");
}
// tempo de execução
System.out.println(System.nanoTime() - temp);
}
// Reescrito com StringBuilder
public void invertBuilder(String frase) {
long temp = System.nanoTime();
StringBuilder palavras = new StringBuilder();
// A Dúvida está na linha abaixo.
for (String palavra : frase.split(" ")) {
palavras.insert(0, palavra + " ");
}
System.out.println(palavras);
// tempo de execução
System.out.println(System.nanoTime() - temp);
}
Tentei ser o mais claro possível, desculpe se não organizei muito bem as minhas dúvidas com o código.