Wie wäre es damit?
public String fillSpaces(int len) {
/* the spaces string should contain spaces exceeding the max needed */
String spaces = " ";
return spaces.substring(0,len);
}
EDIT: Ich habe einen einfachen Code geschrieben, um das Konzept zu testen und hier, was ich gefunden habe.
Methode 1: Hinzufügen eines einzelnen Leerzeichens in einer Schleife:
public String execLoopSingleSpace(int len){
StringBuilder sb = new StringBuilder();
for(int i=0; i < len; i++) {
sb.append(' ');
}
return sb.toString();
}
Methode 2: 100 Leerzeichen und Schleife anhängen, dann Teilzeichenfolge:
public String execLoopHundredSpaces(int len){
StringBuilder sb = new StringBuilder(" ")
.append(" ").append(" ").append(" ")
.append(" ").append(" ").append(" ")
.append(" ").append(" ").append(" ");
for (int i=0; i < len/100 ; i++) {
sb.append(" ")
.append(" ").append(" ").append(" ")
.append(" ").append(" ").append(" ")
.append(" ").append(" ").append(" ");
}
return sb.toString().substring(0,len);
}
Das Ergebnis ist, dass ich 12.345.678 Leerzeichen erschaffe:
C:\docs\Projects> java FillSpace 12345678
method 1: append single spaces for 12345678 times. Time taken is **234ms**. Length of String is 12345678
method 2: append 100 spaces for 123456 times. Time taken is **141ms**. Length of String is 12345678
Process java exited with code 0
und für 10.000.000 Plätze:
C:\docs\Projects> java FillSpace 10000000
method 1: append single spaces for 10000000 times. Time taken is **157ms**. Length of String is 10000000
method 2: append 100 spaces for 100000 times. Time taken is **109ms**. Length of String is 10000000
Process java exited with code 0
Das Kombinieren von direkter Zuordnung und Iteration nimmt immer weniger Zeit in Anspruch, durchschnittlich 60 ms weniger, wenn große Räume erstellt werden. Bei kleineren Größen sind beide Ergebnisse vernachlässigbar.
Aber bitte weiter kommentieren :-)