Whiteship's Note

for each 구문 사용법

Java : 2006.12.11 02:06


배열이나 Collection을 사용할 때 각 배열의 요소들이나 Collection의 요소들을 차례대로 방문해야 할 경우가 자주 있습니다. 주로 for문을 사용하게 되는데 가장 일반적인 for문의 형태가 다음과 같습니다.

for(int i = 0 ; i < ~.length or size() ; i++)

이것을 확 줄여 놓은 것이 for each 구문이며 보통 아래와 같이 생겼습니다.

for(Type t : arrayName or collectionName)

예제 소스코드를 보면서 직관적으로 익히는 것이 좋을 것 같습니다.
먼저 배열을 사용하는 경우입니다.
@Test
   public void arrayView(){
       int[] numbers = {1, 2, 3, 4, 5};

       StringBuilder sb = new StringBuilder();
       for (int i = 0; i < numbers.length; i++)
           sb.append(numbers[i]);

       StringBuilder sb2 = new StringBuilder();
       for (int i : numbers)
           sb2.append(i);

       assertEquals(sb.toString(), sb2.toString());
   }

for 문을 사용할 때 보통 증감 연산에서 1씩 증가 시키면서 차례대로 배열의 모든 요소에 접근하는 경우에 아래와 같이 표현할 수 있습니다.

"numbers에 있는 모든 int 타입의 요소들에 대해서 차례대로" 라고 할 수 있습니다.

이번에는 콜렉션을 사용하는 경우입니다.
@Test
   public void collectionView(){
       List<Integer> numbers = new ArrayList<Integer>();
       for (int i = 0; i < 5; i++)
           numbers.add(i++);

       StringBuilder sb = new StringBuilder();
       for (int i = 0; i < numbers.size(); i++)
           sb.append(numbers.get(i));

       StringBuilder sb2 = new StringBuilder();
       for (int i : numbers)
           sb2.append(i);

       assertEquals(sb.toString(), sb2.toString());
   }

배열을 사용할 때와 마찬가지로 해석할 수 있습니다. 지금 이 예제에서는 편의를 위해AutoBoxing, AutoUnBoxing 그리고 Generic도 사용되었습니다.

'Java' 카테고리의 다른 글

Overriding - covariant return type  (6) 2006.12.31
LinkedList vs ArrayList  (6) 2006.12.22
Agile Java 소스코드(10장까지..)  (8) 2006.12.21
Reflection  (0) 2006.12.19
... 가변인수(varargs)  (2) 2006.12.11
for each 구문 사용법  (0) 2006.12.11
JUnit Reloaded  (0) 2006.12.07
I/O Stream 구성  (0) 2006.12.07
Checked Exception VS Unchecked Exception  (0) 2006.12.01
냄새 나는 Switch 코드와 다형성  (3) 2006.11.30
Map 인터페이스 살펴보기  (0) 2006.11.29
top

Write a comment.




: 1 : ··· : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : ··· : 140 :