@Fedorxchum собсна к чему я это пишу.
Добавить 1 и удалить 1 в arraylist это наркомания.
2000 объектов, сделай обычный array, на 20к, добавляй элементы по индексу, добавь функцию дабы читать get(0) учитывая смешение уже добавленных. Предыдущие можешь даже не вайпать. 20к это ниочем.
Как только осталось 2к до конца, другая функция копирует 2к элементов в новый буфер, а старый ты вайпаешь к чертям.