Рубрики
Без рубрики

Какой цикл for?

Java 8 представила еще один тип цикла for. Это дает нам третий способ их использования. Ты бы так и сделал… С пометкой java, новички.

Java 8 представила другой тип цикла for . Это дает нам третий способ их использования. Вы могли бы подумать, что выпуск другого способа использования цикла предполагает, что он должен быть лучше других. Но это не так, у каждого из них есть тонкие различия, а это значит, что вам следует немного подумать, прежде чем решить, какой из них использовать.

Типы циклов for:

  • Обычный для цикла
  • для каждого цикла
  • Java 8 для каждого цикл

Нормальный для цикла

Теперь я просто собираюсь прямо сказать это. Эти петли выглядят уродливо, и я стараюсь держаться от них как можно дальше. В любом случае, теперь, когда я сказал, давайте вернемся к объяснению того, что это такое. Этот тип цикла использует счетчик для перебора элементов списка или массива. Самый простой способ объяснить это – на примере.

List list = Arrays.asList(1,2,3,4,5,6);
for(int index=0; index

Выше показано, как выполнять итерацию как по списку, так и по массиву. Это делается путем увеличения значения счетчиков index и извлечения элемента в этой позиции с помощью list.get(index) или array[index] . После того, как у него есть элемент, он может делать с ним все, что захочет. Преимущество использования этого типа циклов заключается в том, что у вас больше контроля над тем, как вы считываете элементы, чем при использовании других типов циклов. Если бы вы хотели, вы могли бы очень легко извлечь элемент в позиции index-1 , просто не забудьте обработать сценарий index или у вас на руках будет IndexOutOfBoundsException . Это преимущество элемента управления также является его недостатком, поскольку вам нужно вручную извлекать нужные вам элементы, из-за чего код выглядит загроможденным. Уродство этого цикла не встречается в других типах циклов.

Цикл для каждого

Название этого цикла в значительной степени подводит итог тому, что он делает. Для каждого элемента в коллекции или массиве сделайте с ним что-нибудь. Нет необходимости увеличивать список с помощью счетчика, так как все это делается за кулисами. Просто укажите объект, который вы хотите получить, введите его и назовите, и все готово.

List list = Arrays.asList(1,2,3,4,5,6);
for(int number : list) {
    System.out.println("I have read the number:" + number);
}

int[] array = new int[]{ 1,2,3,4,5,6};
for(int number : array) {
    System.out.println("I have read the number: " + number);
}

Set set = new HashSet<>(Arrays.asList(1,2,3,4,5,6));
for(int number : set) {
    System.out.println("I have read the number: " + number);
}

Посмотрите, какие они простые и красивые, намного приятнее, чем эти уродливые петли выше. В любом случае циклы будут проходить через элементы и во время каждой итерации предоставлять определенной переменной значение из коллекции или массива. Порядок, в котором извлекаются значения, соответствует тому же порядку, в котором элементы находятся в коллекции или массиве. Еще одним преимуществом цикла for-each является то, что он может выполнять итерации по элементам Set , поскольку у него нет собственного метода get() .

Цикл Java 8 для каждого

Это новый цикл for , который был добавлен с выпуском Java 8. Он обладает всеми характеристиками обычного цикла for-each , но использует лямбда-выражения для определения того, что он делает с каждым элементом, который он перебирает из коллекции, хотя эта форма не может использоваться в массиве. Приведенный ниже пример довольно понятен сам по себе.

List list = Arrays.asList(1,2,3,4,5,6);
list.forEach(number -> System.out.println("I have read the number:" + number));

Используя эту форму цикла for of, можно использовать вместо обычного цикла for-each , поскольку функционально они одинаковы, но синтаксис отличается. Эта форма выглядит лучше для простых лямбда-выражений и может позволить определить цикл в одной строке, если выражение достаточно мало. Хотя для циклов с большим количеством операторов внутри них это предпочтение пользователей, в котором for-each цикл, который они используют, поскольку преимущества уменьшения объема написанного кода больше нет `

Итак, какой цикл вы должны использовать? Если вам нужен полный контроль над элементами, которые вы читаете, или вам нужно добавлять и удалять элементы из списка, тогда подойдет обычный цикл for . Если вам просто нужно выполнить некоторые инструкции для элементов списка и вам не нужно добавлять или удалять элементы, тогда используйте как обычный for-each , так и Java 8 для каждого циклов будет достаточно. Определение того, какой цикл for-each использовать, зависит от вас, лично для особых или меньших операторов я бы использовал цикл Java 8 for-each , но для циклов с более длинными операторами внутри тогда старый добрый обычный for-each будет моим циклом выбора.

Оригинал: “https://dev.to/lankydandev/which-for-loop-pa1”