logo

Цикл for-each в Java

Попередня умова: прийняття рішень на Java
For-each — це ще одна техніка обходу масиву, наприклад, цикл for, while, do-while, представлений у Java5.

  • Він починається з ключового слова для як звичайний цикл for.
  • Замість того, щоб оголошувати та ініціалізувати змінну лічильника циклу, ви оголошуєте змінну того самого типу, що й базовий тип масиву, за якою йде двокрапка, після якої йде ім’я масиву.
  • У тілі циклу ви можете використовувати створену вами змінну циклу, а не елемент індексованого масиву.
  • Його зазвичай використовують для ітерації по масиву або класу Collections (наприклад, ArrayList)

Синтаксис:

for (type var : array) { statements using var; }>

Проста програма для кожного циклу:



Java

np.argmax




/*package whatever //do not write package name here */> > import> java.io.*;> > class> Easy> > {> > >public> static> void> main(String[] args)> > >{> > >// array declaration> > >int> ar[] = {>10>,>50>,>60>,>80>,>90> };> > >for> (>int> element : ar)> > >System.out.print(element +>' '>);> >}> }>

>

оператори javascript

>

Вихід

10 50 60 80 90>

Наведений вище синтаксис еквівалентний:

maxSoFar) { maxSoFar = num; } } return maxSoFar; } } Вихідні дані Найвищий бал – 132. Обмеження прийняття рішень у циклі foreach. Цикли for-each не підходять, якщо потрібно змінити масив: for (int num: marks) { // змінює лише num, а не елемент масиву num = num*2; } 2. Цикли for-each не відстежують індекс. Тому ми не можемо отримати індекс масиву за допомогою циклу For-Each for (int num : numbers) { if (num == target) { return ???; // не знаю індексу num } } 3. For-each лише виконує ітерацію по масиву за один крок // не може бути перетворено на цикл for-each for (int i=numbers.length-1; i>0) ; i--) { System.out.println(numbers[i]); } 4. For-each не може обробляти два оператори прийняття рішень одночасно // не може бути легко перетворено на цикл for-each for (int i=0; i 5. For-each також має певні накладні витрати на продуктивність порівняно з простою ітерацією: Java / *пакет будь-який //не пишіть тут назву пакета */ import java.util.*; class static void main (String[] args) { List list = new ArrayList(); час початку; довгий час закінчення; для (int i = 0; i<1000000; i++) { list.add(i); } // Type 1 startTime = Calendar.getInstance().getTimeInMillis(); for (int i : list) { int a = i; } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('For each loop :: ' + (endTime - startTime) + ' ms'); // Type 2 startTime = Calendar.getInstance().getTimeInMillis(); for (int j = 0; j int a = list.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Using collection.size() :: ' + (endTime - startTime) + ' ms'); // Type 3 startTime = Calendar.getInstance().getTimeInMillis(); int size = list.size(); for (int j = 0; j int a = list.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('By calculating collection.size() first :: ' + (endTime - startTime) + ' ms'); // Type 4 startTime = Calendar.getInstance().getTimeInMillis(); for(int j = list.size()-1; j>= 0; j--) { int a = list.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Використання [int j = list.size(); j> size ; j--] :: ' + (endTime - startTime) + ' ms'); } } // Цей код створено Ayush Choudhary @gfg(code_ayush) Вихід для кожного циклу :: 45 мс за допомогою collection.size() :: 11 мс шляхом обчислення collection.size() спочатку :: 13 мс за допомогою [int j = list.size(); j> розмір ; j--] :: 15 мс Пов’язані статті: For-each у C++ проти Java Iterator проти For-each у Java>>>