1. 関数型インターフェース


演習 5-1 (個人): 関数型インターフェースを使ってみましょう。

import java.util.function.Function;
 
public class Main{

    // 文字列 "hoge=" + (a-5) を返す関数 Main::hoge を作成してください
    public static String hoge( Integer a ){
        return ?
    }

    public static void main(String[] args) {

        Function< Integer, String > function;

        // 関数型インターフェース function に関数 Main::hoge を代入してください
        function = ?

        // 321 を引数にして function を呼び出し、その結果を表示してください
        System.out.println( function.apply( ? ) ); 
    }
}

結果:

hoge=316

フォルダ「JAVABSC_5_1」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_1」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。


2. ラムダ式


演習 5-2 (個人): ラムダ式を使ってみましょう。

import java.util.function.Function;
 
public class Main{

    public static void main(String[] args) {

        Function< Integer, String > function;

        // a を引数に持ち文字列 "hoge=" + (a+1) を返すラムダ式を関数型インターフェースに代入してください
        // 正式版でも省略版でもどちらでも可です
        function = ?

       // 789 を引数にして function を呼び出し、その結果を表示してください
        System.out.println( function.apply( ? ) );
    }
}

結果:

hoge=790

フォルダ「JAVABSC_5_2」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_2」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。


3. forEach 文


演習 5-3 (個人): リスト + forEach + ラムダ式を使ってみましょう。

import java.util.ArrayList;

public class Main{

    // (注) Javaのラムダ式はローカル変数の値を書き換えられないので static int で定義しています
    static private int goukei;

    public static void main(String[] args) {

    	ArrayList< Integer > list = new ArrayList< Integer >();
    	list.add( 4 );
    	list.add( -3 );
    	list.add( 5 );

        // forEach 文をラムダ式を使って list に収められている数値の合計を求めてください
        // ラムダ式の引数は a とします
        // ラムダ式は正式版でも省略版でもどちらでも可です        
        goukei = 0;
        list.forEach( ? );

        System.out.println( goukei ); 
    }
}

結果:

6

フォルダ「JAVABSC_5_3」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_3」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。


演習 5-4 (個人): マップ + forEach + ラムダ式を使ってみましょう。

import java.util.HashMap;

public class Main{

    public static void main(String[] args) {

    	HashMap< String, Integer > map = new HashMap< String, Integer >();
        map.put( "札幌", 12 );
        map.put( "函館", 34 );
        map.put( "旭川", 56 );
        map.put( "釧路", 34 );

        // key がキー、value が値です
        // value が34であるkeyを全て表示してください
        map.forEach( (key,value) -> {
            if( ? ){
              System.out.println( ? );
            }
        } );
    }
}

結果:

函館
釧路

フォルダ「JAVABSC_5_4」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_4」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。