今回は、「ラムダ式(使用例)―汎用的な関数型インターフェース―」です。
ラムダ式の使用例について見てみましょう。
ラムダ式は、別のメソッドに処理を渡すことが基本的な使い方です。
このとき、よく使われるのが汎用的な関数型インターフェース(Function,Consumer,Predicate,Supplier)です。
これらの使い方を見てみましょう。
■動画はこちら
■動画で使用しているソースコード
ソートでの使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class SortTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("b"); list.add("a"); Comparator<String> c = (String o1, String o2) -> { return o1.compareTo(o2); }; Collections.sort(list, c); for(int i=0 ; i<list.size() ; i++) { System.out.println(list.get(i)); } } } |
Functionインターフェースの使用例
※「String str = f.apply(“こんにちは”);」以降の行を直接書くことはあまりありませんが、サンプルの都合上書いてあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import java.util.function.Function; public class FunctionTest { public static void main(String[] args) { //かぎかっこを付けて、文字列を整形するFunction Function<String,String> f = (String s) -> { return "「" + s + "」"; }; //文字列をFunctionで整形 String str = f.apply("こんにちは"); //整形した文字列を出力 System.out.println(str); } } |
Consumerインターフェースの使用例
※「c.accept(“こんにちは”);」以降の行を直接書くことはあまりありませんが、サンプルの都合上書いてあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import java.util.function.Consumer; public class CousumerTest { public static void main(String[] args) { //文字列を出力するConsumer Consumer<String> c = (String s) -> { System.out.println(s); }; //文字列をConsumerで出力 c.accept("こんにちは"); } } |
Predicateインターフェースの使用例
※「boolean b = f.test(“こんにちは”);」以降の行を直接書くことはあまりありませんが、サンプルの都合上書いてあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import java.util.function.Predicate; public class PredicateTest { public static void main(String[] args) { //文字列が「こんにちは」かどうか判定するPredicate Predicate<String> f = (String s) -> { if(s.equals("こんにちは")) { return true; } else { return false; } }; //文字列が「こんにちは」かどうか判定 boolean b = f.test("こんにちは"); //判定結果を出力 System.out.println("判定結果:" + b); } } |
Supplierインターフェースの使用例
※「String str = s.get();」以降の行を直接書くことはあまりありませんが、サンプルの都合上書いてあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.function.Supplier; public class SupplierTest { public static void main(String[] args) { //文字列を提供するSupplier Supplier<String> s = () -> { return "こんにちは"; }; //文字列を取得 String str = s.get(); //取得した文字列を出力 System.out.println(str); } } |