Перейти к основному содержимому

Java для цикла

· 3 мин. чтения

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

1. Обзор

В этой статье мы рассмотрим ключевой аспект языка Java — многократное выполнение оператора или группы операторов с использованием цикла for .

2. Простой цикл for

Цикл for — это управляющая структура, которая позволяет нам повторять определенные операции, увеличивая и вычисляя счетчик цикла.

Перед первой итерацией инициализируется счетчик циклов, затем выполняется оценка условия, за которой следует определение шага (обычно простое приращение).

Синтаксис цикла for :

for (initialization; Boolean-expression; step) 
statement;

Давайте посмотрим это на простом примере:

for (int i = 0; i < 5; i++) {
System.out.println("Simple for loop: i = " + i);
}

Инициализация , логическое выражение и шаг , используемые в операторах for , являются необязательными. `` Вот пример бесконечного цикла for:

for ( ; ; ) {
// Infinite for loop
}

2.1. Помечено для петель

Мы также можем пометить циклы. Полезно, если у нас есть вложенные циклы for, чтобы мы могли прерывать / продолжать неспецифический цикл for :

aa: for (int i = 1; i <= 3; i++) {
if (i == 1)
continue;
bb: for (int j = 1; j <= 3; j++) {
if (i == 2 && j == 2) {
break aa;
}
System.out.println(i + " " + j);
}
}

3. Улучшенный цикл

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

Синтаксис расширенного цикла for:

for(Type item : items)
statement;

Поскольку этот цикл упрощен по сравнению со стандартным циклом for, нам нужно объявить только две вещи при инициализации цикла:

  1. Дескриптор элемента, над которым мы сейчас работаем
  2. Исходный массив/коллекция, которую мы повторяем

Следовательно, мы можем сказать, что: Для каждого элемента в items назначьте элемент переменной item и запустите тело цикла .

Давайте посмотрим на простой пример:

int[] intArr = { 0,1,2,3,4 }; 
for (int num : intArr) {
System.out.println("Enhanced for-each loop: i = " + num);
}

Мы можем использовать его для перебора различных структур данных Java:

Получив объект списка List<String> , мы можем повторить его:

for (String item : list) {
System.out.println(item);
}

Мы можем аналогичным образом перебрать набор Set<String> :

for (String item : set) {
System.out.println(item);
}

И, учитывая карту Map<String,Integer>, мы также можем выполнить итерацию по ней:

for (Entry<String, Integer> entry : map.entrySet()) {
System.out.println(
"Key: " + entry.getKey() +
" - " +
"Value: " + entry.getValue());
}

3.1. Итерабельный.для каждого()

Начиная с Java 8, мы можем использовать циклы for-each немного по-другому. Теперь у нас есть специальный метод forEach() в интерфейсе Iterable , который принимает лямбда-выражение, представляющее действие, которое мы хотим выполнить .

Внутри он просто делегирует задание стандартному циклу:

default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}

Давайте посмотрим на пример:

List<String> names = new ArrayList<>();
names.add("Larry");
names.add("Steve");
names.add("James");
names.add("Conan");
names.add("Ellen");

names.forEach(name -> System.out.println(name));

4. Вывод

В этом кратком руководстве мы рассмотрели цикл for в Java.

Как всегда, примеры можно найти на GitHub .