Concatenando String de Forma Eficiente em Java

Publicado por Robson Fernando Gomes em 21/05/2019

[ Hits: 347 ]

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

Instalando MSN Messenger no Linux

ZSNES - Emulador de Super Nintendo para GNU/Linux

Adquirindo informações de sessão no Oracle

Instalando o PostgreSQL no GNU/Linux

Alinhando texto dentro de um JTextArea em Java Swing

Leitura recomendada

Introdução ao Java Micro Edition (J2ME)

Obter data e hora do sistema em Java

BlueJ - Para iniciantes em Java e programação orientada a objetos

Java Web Start

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

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts