Há momentos que é necessário concatenar (juntar) uma grande quantidade de Strings em
Java. Isso pode ser feito de duas maneiras simples, as duas listadas abaixo:
Pela junção com o operador mais +:
...
String x = stringY+stringZ;
...
Exemplo:
public static void main(String args) {
String texto = "Teste 01";
for(int i=0;i<10000 br="" i=""> {
texto=texto+" Teste "+i;
}
}
Pelo método concat da própria classe String:
String x = stringY.concat(stringZ);
Exemplo:
public static void main(String args) {
String texto = "Teste 01";
for(int i=0;i<10000 br="" i=""> {
texto=texto.concat(" Teste "+i);
}
}
Ambas as maneiras são válidas, porém, quando é necessário juntar uma grande quantidade de Strings, essas maneiras se tornam defasadas. Para tiramos melhor proveito, uma ótima saída é utilizar a classe StringBuilder.
Sintaxe:
StringBuilder nome = new StringBuilder();
nome.append(string);
Onde:
- nome.append(String); → Método para concatenação da string.
Exemplo:
public static void main(String args) {
StringBuilder texto=new StringBuilder();
for(int i=0;i<10000 br="" i=""> {
texto.append("Teste "+i);
}
}
Comparativo
Abaixo, é possível ver uma classe que faz a comparação entre os tipos de concatenação acima.
public class Teste {
public static void main(String args) {
String texto = "Teste 01";
long inicio = System.nanoTime();
long diferenca;
//**********************************************
for(int i=0;i<10000 br="" i=""> {
texto = texto+"Teste "+i;
}
diferenca = System.nanoTime()-inicio;
System.out.printf("\n\nCom soma +");
System.out.printf("\nTempo: %d ns",(diferenca));
System.out.printf("\nTamanho: %d ns",texto.length());
inicio = System.nanoTime();
texto="";
//**********************************************
for(int i=0;i<10000 br="" i=""> {
texto = texto.concat("Teste "+i);
}
diferenca = System.nanoTime()-inicio;
System.out.printf("\n\nCom concat");
System.out.printf("\nTempo: %d ns",(diferenca));
System.out.printf("\nTamanho: %d ns",texto.length());
//**********************************************
StringBuilder texto2=new StringBuilder();
inicio = System.nanoTime();
for(int i=0;i<10000 br="" i=""> {
texto2.append("Teste "+i);
}
diferenca = System.nanoTime()-inicio;
System.out.printf("\n\nCom StringBuilder");
System.out.printf("\nTempo: %d ns",(diferenca));
System.out.printf("\nTamanho: %d ns",texto2.toString().length());
}
}
Saída
Com soma +:
- Tempo: 293225120 ns
- Tamanho: 98898 ns
Com concat:
- Tempo: 23470066971 ns
- Tamanho: 98890 ns
Com StringBuilder:
- Tempo: 4156625 ns
- Tamanho: 98890 ns
Como foi possível ver, o método com StringBuilder é muito mais rápido do que as outras maneiras.
Fonte:
Magus Code: Concatenando String de forma eficiênte em java
Nenhum comentário foi encontrado.