У меня есть arrayList некоторых объектов, их в среднем 150, максимум около 1000. Они часто создаются и удаляюсь(около 30 в секунду). Проблема в том что удаляются они из середины, и если я правильно понимаю механизм arrayList то стоимость этой операции тем больше чем дальше элемент храниться от последнего элемента. Но мне порядок элементов не важен.
Моя идея в следующем, создаем массив с максимально возможным количеством объектов, дальше в некой переменной (пусть count) храним количество этих объектов. При добавлении элемента просто создаем его в array[count] = new Obj(); При удалении из середины последний объект перемешаем в тот что удаляем. В результате работает быстрее. Более того, никаких проблем с многопоточностью.
array[this_element_delete] = array[count-1];
array[count-1] = null;
Но собственно я плохо знаю джаву, как в этом случае будет вести себя сборщик мусора? Другие подводные камни?