Concatenando String de Forma Eficiente em Java

Publicado por Robson Fernando Gomes em 21/05/2019

[ Hits: 9.193 ]

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

Copiando um arquivo com Java

Como verificar ou setar permissões em arquivos através do JAVA

Converter arquivos RPM para DEB

Instalando o PostgreSQL no GNU/Linux

Copiar o conteúdo de uma lista para outra lista em Java

Leitura recomendada

Trabalhando com cores no Java

Instalação do Java no Debian, fácil-fácil

Introdução ao Java Micro Edition (J2ME)

Remover a barra padrão de um JFrame

Executar comandos do terminal Linux em Java

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário