Одной из важных оптимизаций является предварительное распределение количества элементов в "someOtherArray", потому что в противном случае он будет выполнять много перераспределений - конечно, в зависимости от того, с какими объектами вы имеете дело.Поскольку мы не знаем заранее полученный размер, самый простой способ - установить емкость someOtherArray
равной foos
, используя
someOtherArray.ensureCapacity(foos.size());
Конечно, это не будет иметь смысла, если foos
огромен, и только несколько элементов обычно помечены.
Также обратите внимание, что ваш метод должен сначала очистить () someOtherArray.
Другая оптимизация, которую я могу придумать, - это как элементы foos
доступны.Вы можете попробовать использовать типичный цикл for (int i = 0; i < size; i++)
и инициализировать fooObject
с помощью foos.get(i)
.Этот способ, вероятно, будет быстрее, если «расширенный для» реализован путем получения копии элементов в массиве, или, возможно, также при получении итератора.Но я думаю, что перебор ArrayList получает специальную оптимизацию в компиляторе ... Может быть, у других есть опыт в этой области.