Первая версия идеально подходит , если вы знаете, что работаете с ArrayList (или каким-либо другим списком на основе массива, например Vector).
Если myObject
окажется LinkedList
или подобное, ваша производительность будет ухудшаться с более длинными списками, так как тогда get(i)
больше не будет выполняться в постоянное время.
Ваш второй подход будет обрабатывать LinkedList
с, а также ArrayList
с, но он повторяется дважды по вашему списку, один раз в вашем for
l oop и один раз в вызове indexOf()
.
Я бы порекомендовал третью версию: используйте for для l oop из второго подхода и добавьте целочисленную переменную для подсчета, увеличивая ее до l oop. Таким образом, вы получаете лучшее из обоих: итерацию без снижения производительности и дешевый подсчет позиций.