Concatenando String de Forma Eficiente em Java

Publicado por Robson Fernando Gomes em 21/05/2019

[ Hits: 18.361 ]

Blog: http://maguscode.blogspot.com/

 


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

Outras dicas deste autor

Executar programas pelo terminal e deixá-lo livre

POO - Conceitos de herança e composição

Instalando o PostgreSQL no GNU/Linux

Como aumentar a memória do Tomcat7 no Linux

Como gerar números aleatórios em Java

Leitura recomendada

Obter data e hora do sistema em Java

Um problema raro, mas que pode acontecer com você usando NextLine()

Banco do Brasil com Java nativo no Firefox/Iceweasel - Instalação no Debian

Apostilas de Java para download

Como lista todas fontes do computador em Java

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts