StringBuilder vs Chaîne envisage de remplacer

Lors de la concaténation de beaucoup de chaînes, j'ai été recommandé de le faire à l'aide d'un StringBuilder en tant que tel:

StringBuilder someString = new StringBuilder("abc");
someString.append("def");
someString.append("123");
someString.append("moreStuff");

par opposition à

String someString = "abc";
someString = someString + "def";
someString = someString + "123";
someString = someString + "moreStuff";

qui aurait pour résultat la création d'un certain nombre de Chaînes, par opposition à un.

Maintenant, j'ai besoin de faire quelque chose de similaire, mais au lieu d'utiliser la concaténation j'utilise le replace méthode de Chaîne de caractères en tant que tel:

String someString = SOME_LARGE_STRING_CONSTANT;
someString = someString.replace("$VARIABLE1", "abc");
someString = someString.replace("$VARIABLE2", "def");
someString = someString.replace("$VARIABLE3", "123");
someString = someString.replace("$VARIABLE4", "moreStuff");

Pour accomplir la même chose en utilisant StringBuilder, je dois le faire, juste pour un remplacement:

someString.replace(someString.indexOf("$VARIABLE1"), someString.indexOf("$VARIABLE1")+10, "abc");

Donc ma question est: "Est-il préférable d'utiliser des chaînes de caractères.remplacer et avoir beaucoup de Cordes supplémentaires créés, ou à utiliser StringBuilder encore, et que vous avez beaucoup de longue haleine, tels que celui ci-dessus?"

  • Si est génératrice de problèmes de performance, de les modifier. Si il n'y a plus d'importants changements à effectuer, de les modifier. Si l'entrée est vraiment très grand et très souvent utilisé, changez-le. BTW, le secont approche ne fonctionnera pas puisqu'il suffira de le remplacer une fois, vous devez le mettre sur une boucle while. Jetez un oeil à ma réponse.
InformationsquelleAutor DanielGibbs | 2011-02-11