Còn cái này thì sao?
public String fillSpaces(int len) {
/* the spaces string should contain spaces exceeding the max needed */
String spaces = " ";
return spaces.substring(0,len);
}
EDIT: Tôi đã viết một mã đơn giản để kiểm tra khái niệm và ở đây những gì tôi tìm thấy.
Phương pháp 1: thêm không gian đơn trong một vòng lặp:
public String execLoopSingleSpace(int len){
StringBuilder sb = new StringBuilder();
for(int i=0; i < len; i++) {
sb.append(' ');
}
return sb.toString();
}
Phương pháp 2: nối thêm 100 khoảng trắng và vòng lặp, sau đó chuỗi con:
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);
}
Kết quả tôi nhận được tạo 12.345.678 chỗ trống:
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
và cho 10.000.000 không gian:
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
kết hợp phân bổ trực tiếp và lặp lại luôn mất ít thời gian hơn, trung bình ít hơn 60ms khi tạo không gian lớn. Đối với kích thước nhỏ hơn, cả hai kết quả là không đáng kể.
Nhưng hãy tiếp tục bình luận :-)