演習 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」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。
演習 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」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。
演習 5-3 (個人): リストに対して forEach を使ってみましょう。
import java.util.ArrayList;
public class Main{
// (注) Javaのラムダ式はローカル変数にアクセスできないので static int で定義しています
static private int goukei;
public static void main(String[] args) {
var 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) {
var map = new HashMap< String, Integer >();
map.put( "札幌", 12 );
map.put( "函館", 34 );
map.put( "旭川", 56 );
map.put( "釧路", 34 );
// 値が34である都市を全て表示してください
map.forEach( (key,value) -> {
if( ? ){
System.out.println( ? );
}
} );
}
}
結果:
函館
釧路
フォルダ「JAVABSC_5_4」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_4」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。
演習 5-5 (個人): こちらのソース1で与えた入れ子構造のマップに対して forEach を使ってみましょう。
import java.util.HashMap;
public class Main{
public static void main(String[] args) {
var sincho = new HashMap<String, HashMap<String, Integer>>();
sincho.put("1組", new HashMap<String, Integer>() );
sincho.get("1組").put( "安倍", 162 );
sincho.get("1組").put( "田中", 132 );
sincho.put("2組", new HashMap<String, Integer>() );
sincho.get("2組").put( "鈴木", 151 );
sincho.get("2組").put( "本田", 172 );
// 下の結果の様に"組,名前,身長"の順に表示する
sincho.forEach( (key1,value1) -> {
?.forEach( (key2,value2) -> {
System.out.println( ? );
});
});
}
}
結果:
※ こちらで説明したようにHashMapの要素はputした順には保存されないことに注意する
2組,鈴木,151
2組,本田,172
1組,田中,132
1組,安倍,162
フォルダ「JAVABSC_5_5」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_5」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。
以下準備中
演習 5-? (個人): StreamAPIを使って「値が30以上かつ40以下の都市名」を表示してみましょう。
import java.util.HashMap;
public class Main{
public static void main(String[] args) {
var map = new HashMap< String, Integer >();
map.put( "札幌", 12 );
map.put( "函館", 34 );
map.put( "旭川", 56 );
map.put( "釧路", 34 );
// 値が30以上かつ40以下の都市名を表示して下さい
map.entrySet().stream()
.filter( i -> ? && ? ) // 中間操作
.forEach( i -> System.out.println( ? ) ); // 終端操作
}
}
結果:
函館
釧路
フォルダ「JAVABSC_5_?」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_?」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
上のコードをコピーして、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。
演習 5-? (個人): ソース1を修正して、以下の様な仕様のプログラムを作成しましょう。
仕様: ・スレッドを3つ(thread1、thread2、thread3)作る ・thread1の処理内容: 3秒待ってから hoge と1回だけ表示する ・thread2の処理内容: 1秒待ってから fuga と1回だけ表示する ・thread3の処理内容: 2秒待ってから piyo と1回だけ表示する 結果: fuga piyo hoge
フォルダ「JAVABSC_5_?」を新規作成し、その中に移動します
フォルダ「JAVABSC_5_?」の中で新規に 1 つソースを作ります。ファイル名を「Main.java」とします。
ソース1をコピーし、解答します。
コンパイルして実行します。
チーム内で答え合わせをしてください。
指定場所に「ソースコード」と「実行結果」を記入して下さい。