Pular para o conteúdo

Concatenando String de Forma Eficiente em Java

Dica publicada em Java / Introdução
Robson Fernando Gomes magotico
Hits: 19.268 Categoria: Java Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

Concatenando String de Forma Eficiente em Java

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

Executar programas pelo terminal e deixá-lo livre

Gerenciador de Downloads para Firefox

Convertendo Matriz para Lista em Java e Lista para Matriz

Montando e conectando em um servidor NFS

Entendendo os getters e setters em Java

Java - Anti-aliasing de fontes em aplicações gráficas

Exibir ponto em expressão regular (regex)

Acessos em Java: private, protected e public

Pacote JDK no Ubuntu 10.04

Universidade XTI - Vídeo aulas

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.