[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

https://www.sejuku.net/blog/19710

https://www.w3schools.com/java/java_lambda.asp

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*