[A-00214] Javaラムダ/関数型再考
javaのラムダと関数型インタフェースについて深く関わってこなかったので再考したい
・forEachメソッドの使い方
List型に対しての使用方法は下記
// List型でLambda
List<String> list = new ArrayList<>();
list.add("David");
list.add("Mark");
list.add("George");
list.forEach(string -> System.out.println(string));
配列に対して使う場合は下記
// 配列でLambda
String[] strArray = {"Ben", "John", "Sara", "Yoshio"};
Arrays.stream(strArray).forEach(s -> System.out.println(s));
Map型に対して使う場合は下記
// Map型でLambda
Map<Integer, String> map = new HashMap<>();
map.put(1, "Duan");
map.put(2, "Michael");
map.put(3, "Bob");
map.forEach((k, v) -> System.out.println("key:" + k + " value:" + v));
・無名クラスのインスタンス生成
無名クラスを作成するときにいちいち抽象メソッドの実装をせずに作成できます。
// Runnableインタフェースを実装し、無名クラスを作成
Runnable runner = () -> { System.out.println("Hello,world"); };
runner.run();
また型推論においてもLambdaを使用できます。
public static void main(String[] args) {
// 型推論でRunnableのインスタンスを実行
method(()-> { System.out.println("GoodBye!"); });
}
public static void method(Runnable runner) {
runner.run();
}
・Appendix
参考文献はこちら
https://qiita.com/sano1202/items/64593e8e981e8d6439d3
https://qiita.com/tasogarei/items/60b5e55d8f42732686c6
コメントを残す