プログラミング応用b 第9回『コレクション』

【拡張for文(for-each文)】

 Java 5 (2004年)から,配列 と (Iterableインタフェイスを実装している=イテレータオブジェクトを生成可能な)コレクション
に対して,要素を順次アクセスするための拡張for文(for-each文とも言う)が導入された。



以下に使用例をあげる。

上図の例1, 例2 ソースコード:ForEachTest.java
import java.util.LinkedList;
        
public class ForEachTest {

    public static void main(String[] args) {
        
        // 配列で使用する場合(上図例1)。
        int a[ ] = { 10, 20, 30, 40, 50 };
        int s = 0;
        for( int e : a ) {
            s = s + e;
        }
        System.out.println( s );
        
        // 配列で使用する場合(上図例1)。        
        LinkedList<Double> aLL = new LinkedList<Double>( );
        aLL.add( 1.1 ); aLL.add( 2.3 ); aLL.add( 3.3 );

        for( double d : aLL ) System.out.println( d );

        // オートアンボクシングを利用しない場合は次の様に書かなければならない。
        // for( Double d : aLL ) System.out.println( d.doubleValue( ) );        }
    }
}

自作クラスのオブジェクトを格納した連結リストに使用した例。ソースコード:ForEachTest2.java
import java.util.LinkedList;

class Person {
    String name;
    int age;
    
    public Person( String name, int age ) {
        this.name = name; this.age = age;
    }
}



public class ForEachTest2 {
    
    public static void main(String[] args) {
        
        LinkedList<Person> aLL = new LinkedList<Person>( );
        aLL.add( new Person( "Taro",   19 ) );
        aLL.add( new Person( "Hanako", 18 ) );
        aLL.add( new Person( "Bob",    17 ) );
        
        for( Person p : aLL ) {
            System.out.println( p.name + ", " + p.age );
        }
    }
    
}