Попробуйте использовать массив фиксированного размера и добавьте с помощью индекса по модулю размера. Это известно как круговой массив, Википедия имеет достойную статью на эту тему.
По сути, вы отслеживаете индекс, в который следует записать следующую запись, и позволяете этому индексу обернуться в размере буфера, а затем, когда вы продолжите запись, вы перезапишете записи, которые являются самыми старыми.
Примерно так:
Object[] ring = new Object[32];
int writeIndex = 0;
public void add(Object o) {
ring[writeIndex % ring.length] = o;
writeIndex++;
}