Вставка или удаление из коллекции каждый раз, когда что-то движется, является верным способом сузить производительность вашей программы в одно мгновение.
Разделите свой мир на сетку и сохраните ссылку на то, какие символы являются определенным квадратом сетки в любой точке.Если вы хотите найти объекты, которые находятся рядом с другим, вы можете определить круг вокруг центра рассматриваемого объекта, проверить, какие квадраты перекрывают этот круг, и проверить только объекты, которые попадают в эти 4 квадрата, чтобы определить, что находится внутри круга..