В Java, быстрее итерации через массив старомодным способом,
for (int i = 0; i < a.length; i++)
f(a[i]);
Или используя более сжатую форму,
for (Foo foo : a)
f(foo);
Для ArrayList ответ является тем же самым?
Конечно, для большой части кода приложения ответ заключается в том, что он не имеет заметной разницы, поэтому для удобства чтения следует использовать более сжатую форму. Однако контекст, который я рассматриваю, - это тяжелые технические вычисления, причем операции должны выполняться в миллиарды раз, поэтому даже незначительная разница в скорости может оказаться значимой.