Melhor opção de String

3 respostas
V

Olá, galera!
Treinando string me surgiu uma dúvida:

Eu tenho uma string enorme, algo como um texto ou um paragrafo. Esta string será dividida em várias partes (no caso em palavras ou até letras).
Ex:

Strings: "João andou sobre o mato." (1) ->Completa "João" (2) "andou" (3) "sobre" (4) "o" (5) "mato" (6)

Há algum tempo vi postarem a eficiência da StringBuilder, ao invés de String. Neste caso, qual seria o melhor a se utilizar?

3 Respostas

drsmachado

Então, na boa? Depende muito do que você quer fazer.
StringBuilder vai te auxiliar se for necessário concatenar muitas informações.
Faça um teste simples.

public class TesteString{
    public static void main(String args[]){
        String val = "";
        long ini = new Date().getTime();
        for(int i = 0; i < 100000; i++){
            val += "Esta é uma nova frase \n";
        }
        long fim = new Date().getTime();
        long dif = fim - ini;
        System.out.println("Este processo levou: " + (dif/1000) + " segundos");
    }
}

E

public class TesteStringBuilder{
    public static void main(String args[]){
        StringBuilder val = new StringBuilder();
        long ini = new Date().getTime();
        for(int i = 0; i < 100000; i++){
            val.append("Esta é uma nova frase \n");
        }
        long fim = new Date().getTime();
        long dif = fim - ini;
        System.out.println("Este processo levou: " + (dif/1000) + " segundos");
    }
}

E veja a diferença de tempo…
A razão para isto é que String é um objeto imutável e, cada vez que você faz um val += “”, está criando novos objetos na memória.

V

Exatamente. No programa haverá muitas “somas” e “subtrações” de Strings.
Pelo que eu entendi o mais indicado para isso seria a Builder mesmo, né? Valeu :slight_smile:

drsmachado

VA:
Exatamente. No programa haverá muitas “somas” e “subtrações” de Strings.
Pelo que eu entendi o mais indicado para isso seria a Builder mesmo, né? Valeu :)

Sim.

Criado 20 de agosto de 2013
Ultima resposta 21 de ago. de 2013
Respostas 3
Participantes 2