Concatenando String de Forma Eficiente em Java

Publicado por Robson Fernando Gomes em 21/05/2019

[ Hits: 341 ]

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

ZSNES - Emulador de Super Nintendo para GNU/Linux

Como lista todas fontes do computador em Java

Lógica para nomes de variáveis, métodos e classes

Dicas para iniciantes em Linux

Utilizando comando bg

Leitura recomendada

Configurando o Java para desenvolvedores com o OpenJDK 8

Universidade XTI - Vídeo aulas

Como lista todas fontes do computador em Java

Criando e usando arquivos de propriedades em Java

Entendendo os getters e setters em Java

  

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