For-each Loop
The basic for loop was extended in Java 5 to make iteration over arrays and other collections more convenient. This newer for statement is called the enhanced for or for-each (because it is called this in other programming languages). I've also heard it called the for-in loop.
Use it in preference to the standard for loop if applicable (see last section below) because it's much more readable.
Series of values. The for-each loop is used to access each successive value in a collection of values.
Arrays and Collections. It's commonly used to iterate over an array or a Collections class (eg, ArrayList).
Iterable<E>. It can also iterate over anything that
implements the Iterable<E> interface (must define
iterator()
method). Many of the Collections classes (eg,
ArrayList
) implement Iterable<E>, which makes the
for-each loop very useful. You can also implement
Iterable<E> for your own data structures.
The for-each and equivalent for statements have these forms. The two basic equivalent forms are given, depending one whether it is an array or an Iterable that is being traversed. In both cases an extra variable is required, an index for the array and an iterator for the collection.
For-each loop | Equivalent for loop |
---|---|
for (type var : arr) { body-of-loop } |
for (int i = 0; i < arr.length; i++) { type var = arr[i]; body-of-loop } |
for (type var : coll) { body-of-loop } |
for (Iterator<type> iter = coll.iterator(); iter.hasNext(); ) { type var = iter.next(); body-of-loop } |
Here is a loop written as both a for-each loop and a basic for loop.
double[] ar = {1.2, 3.0, 0.8}; int sum = 0; for (double d : ar) { // d gets successively each value in ar. sum += d; }
And here is the same loop using the basic for. It requires an extra iteration variable.
double[] ar = {1.2, 3.0, 0.8}; int sum = 0; for (int i = 0; i < ar.length; i++) { // i indexes each element successively. sum += ar[i]; }
Altho the enhanced for loop can make code much clearer, it can't be used in some common situations.
[Java] 암호화 알고리즘 - Blowfish (0) | 2012.04.01 |
---|---|
[JAVA] 자바 랜덤 함수, 비중복 랜덤 값 뽑기. (0) | 2011.09.15 |
[java개인공부] StreamTokenizer 사용하여 CSV파일 내용 읽기 (0) | 2011.06.16 |
[개인공부] enum 역활 및 활용. (0) | 2011.04.28 |
[개인공부]java.util.Collection (0) | 2011.04.22 |
댓글 영역