java: use StringBuilder to insert at the beginning

user685275 picture user685275 · May 9, 2011 · Viewed 142.4k times · Source

I could only do this with String, for example:

String str="";
for(int i=0;i<100;i++){
    str=i+str;
}

Is there a way to achieve this with StringBuilder? Thanks.

Answer

user541686 picture user541686 · May 9, 2011
StringBuilder sb = new StringBuilder();
for(int i=0;i<100;i++){
    sb.insert(0, Integer.toString(i));
}

Warning: It defeats the purpose of StringBuilder, but it does what you asked.


Better technique (although still not ideal):

  1. Reverse each string you want to insert.
  2. Append each string to a StringBuilder.
  3. Reverse the entire StringBuilder when you're done.

This will turn an O(n²) solution into O(n).