для каждого цикла против итератора: эффективность в сборе Traversal
введение
при переселении коллекции в Java, выборе между использованием для использования иэ-образа. В этой статье исследуются различия в эффективности между этими двумя подходами.
for-e-each
, представленная в Java 5, For-E-of-Mepbre (также известный как усиленный для цикла) является комплексным и простым для чтения синтаксиса для итерации над поверхностями. Он использует итератор внутренне:
Lista = new ArrayList(); for (Integer integer : a) { integer.toString(); }
iterator
итератор предоставляет стандартизированный интерфейс для итерации над коллекциями. Он позволяет управлять процессом обхода.
for (iterator
Listсравнение эффективностиa = new ArrayList(); for (Iterator iterator = a.iterator(); iterator.hasNext();) { Integer integer = iterator.next(); integer.toString(); }
Для простого доступа только для чтения к коллекции практически нет различий в производительности между подходом и итератором. Внутренний цикл внутренне использует механизм итератора.
, однако, если использует традиционную петлю "C-стиль" с get (i):
for (int i = 0; i ). Bytecode для обоих подходов: list aload 1
Invokeinterface java/util/list.iterator () ljava/util/iterator;
Асторе 3
... iterator Как вы можете наблюдать, сгенерированный байт-код идентичен, что не указывает на штраф за производительность при использовании любого захода. Итератор предлагает преимущества только при работе с конкретными структурами данных или требующим пользовательского поведения итерации. Для простоты и читабельности, за свой счет, как правило, является предпочтительным выбором. ]for (int i = 0; i 2
List
ALOAD 1
INVOKEINTERFACE java/util/List.iterator()Ljava/util/Iterator;
ASTORE 3
...
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3