전제조건: Java에서의 의사결정
For-each는 Java5에 도입된 for 루프, while 루프, do-while 루프와 같은 또 다른 배열 탐색 기술입니다.
- 키워드로 시작됩니다 ~을 위한 일반적인 for 루프와 같습니다.
- 루프 카운터 변수를 선언하고 초기화하는 대신 배열의 기본 유형과 동일한 유형의 변수를 선언하고 그 뒤에 콜론과 배열 이름이 옵니다.
- 루프 본문에서는 인덱스 배열 요소를 사용하는 대신 생성한 루프 변수를 사용할 수 있습니다.
- 일반적으로 배열이나 컬렉션 클래스(예: ArrayList)를 반복하는 데 사용됩니다.
통사론:
for (type var : array) { statements using var; }> 각 루프에 대한 간단한 프로그램:
자바
Java에서 날짜 형식 지정
/*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 +>' '>);> >}> }> |
>
>산출
아푸르바 파가온카르
10 50 60 80 90>
위 구문은 다음과 동일합니다.
for (int i=0; i Java // Java program to illustrate // for-each loop class For_Each { public static void main(String[] arg) { { int[] marks = { 125, 132, 95, 116, 110 }; int highest_marks = maximum(marks); System.out.println('The highest score is ' + highest_marks); } } public static int maximum(int[] numbers) { int maxSoFar = numbers[0]; // for each loop for (int num : numbers) { if (num>maxSoFar) { maxSoFar = 숫자; } } maxSoFar를 반환합니다. } } 출력 최고 점수는 132입니다. for-each 루프 의사 결정의 한계 For-each 루프는 배열을 수정하려는 경우 적합하지 않습니다. for (int num : mark) { // num만 변경하고 배열 요소는 변경하지 않습니다. 숫자 = 숫자*2; } 2. For-each 루프는 인덱스를 추적하지 않습니다. 따라서 For-Each 루프를 사용하여 배열 인덱스를 얻을 수 없습니다. for (int num : 숫자) { if (num == target) { return ???; // num의 인덱스를 모릅니다 } } 3. For-each는 단일 단계로 배열을 순방향으로만 반복합니다. // for-each 루프로 변환할 수 없습니다. for (int i=numbers.length-1; i>0 ; i--) { System.out.println(숫자[i]); } 4. For-each는 두 개의 의사 결정 문을 동시에 처리할 수 없습니다. // for-each 루프로 쉽게 변환할 수 없습니다. for (int i=0; i 5. For-each에는 단순 반복에 비해 성능 오버헤드도 있습니다. Java / *패키지 무엇이든 //여기에 패키지 이름을 쓰지 마세요. */ import java.util.*; import java.util.*; public static void main (String[] args) { List list = new ArrayList(); startTime; 긴 endTime; for (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 ms collection.size() 사용 :: 11 ms collection.size()를 먼저 계산하여 :: 13 ms [int j 사용 = 목록.크기(); j> 크기 ; j--] :: 15 ms 관련 기사: C++의 For-each와 Java Iterator의 비교 vs Java의 For-each>