Вы можете уменьшить накладные расходы для каждого вызова, сохраняя данные заполнения, а не перестраивая его каждый раз:
public class RightPadder {
private int length;
private String padding;
public RightPadder(int length, String pad) {
this.length = length;
StringBuilder sb = new StringBuilder(pad);
while (sb.length() < length) {
sb.append(sb);
}
padding = sb.toString();
}
public String pad(String s) {
return (s.length() < length ? s + padding : s).substring(0, length);
}
}
. В качестве альтернативы вы можете сделать длину результата параметром для pad(...)
метод. В этом случае отредактируйте скрытое дополнение в этом методе, а не в конструкторе.
(Подсказка: для дополнительного кредита сделайте его потокобезопасным!;) -