Je ne pouvais le faire qu'avec String, par exemple :
String str="";
for(int i=0;i<100;i++){
str=i+str;
}
Existe-t-il un moyen d'y parvenir avec StringBuilder ? Merci.
Je ne pouvais le faire qu'avec String, par exemple :
String str="";
for(int i=0;i<100;i++){
str=i+str;
}
Existe-t-il un moyen d'y parvenir avec StringBuilder ? Merci.
StringBuilder sb = new StringBuilder();
for(int i=0;i<100;i++){
sb.insert(0, Integer.toString(i));
}
Attention : Cela va à l'encontre de l'objectif de StringBuilder
mais il fait ce que vous avez demandé.
Une meilleure technique (même si ce n'est pas encore l'idéal) :
StringBuilder
.StringBuilder
quand vous aurez terminé.Cela va transformer un O( n ²) en O( n ).
Il est étrange que ce post n'ait pas obtenu beaucoup de votes alors qu'il fournit la solution par une manipulation astucieuse de la boucle,
@nom-mon-ir il a juste inversé la chaîne. Il ne répond pas à la question de savoir comment ajouter à gauche.
Comme solution alternative, vous pouvez utiliser une structure LIFO (comme une pile) pour stocker toutes les chaînes et lorsque vous avez terminé, il suffit de les sortir et de les mettre dans le StringBuilder. Celui-ci inverse naturellement l'ordre des éléments (chaînes) qui y sont placés.
Stack<String> textStack = new Stack<String>();
// push the strings to the stack
while(!isReadingTextDone()) {
String text = readText();
textStack.push(text);
}
// pop the strings and add to the text builder
String builder = new StringBuilder();
while (!textStack.empty()) {
builder.append(textStack.pop());
}
// get the final string
String finalText = builder.toString();
Ce fil est assez ancien, mais vous pourriez aussi penser à une solution récursive en passant le StringBuilder à remplir. Cela permet d'éviter tout traitement inverse, etc. Il suffit de concevoir votre itération avec une récursion et de décider soigneusement d'une condition de sortie.
public class Test {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
doRecursive(sb, 100, 0);
System.out.println(sb.toString());
}
public static void doRecursive(StringBuilder sb, int limit, int index) {
if (index < limit) {
doRecursive(sb, limit, index + 1);
sb.append(Integer.toString(index));
}
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.