Вы можете использовать delete :
void append(String s) {
buffer.append(s);
if(buffer.length() > MAX_LENGTH){
buffer.delete(0, buffer.length() - MAX_LENGTH);
}
}
Update : если параметр является длинной строкой, это приводит к ненужным выделениям StringBuffer.Чтобы избежать этого, вы можете сначала укоротить буфер, а затем добавить только столько символов строки, сколько необходимо:
void append(String s) {
if (buffer.length() + s.length() > MAX_LENGTH) {
buffer.delete(0, buffer.length() + s.length() - MAX_LENGTH);
}
buffer.append(s, Math.max(0, s.length() - MAX_LENGTH), s.length());
}