Как быстрее обходить список (ArrayList) и вставлять в него элементы? Через ListIterator или созданием нового списка?
Есть следующая задача: имеется цикл по спискам элементов (ArrayList), содержащим в среднем около 15 элементов. Каждый раз мы вставляем в этот список примерно 1-2 элемента, причём в неопределенное место списка (т.е. может быть и начало, и конец, и середина). И в итоге нужно создавать копии этих списков и сохранять отдельно. Вижу 2 основных подхода: использование ListIterator - создание в цикле копии списка и вставка прямо по ходу цикла. И второй - создание нового списка и добавление в него по очереди всех элементов, в том числе и новых. С одной стороны, вставка в новый список будет занимать константное время, но возможны затраты на расширение массива, а ListIterator двигает элементы в массиве, которые находятся правее вставляемого. Но при этом часто слышу мнение, что нужно использовать Iterator. Как всё таки быстрее?