読者です 読者をやめる 読者になる 読者になる

修行@ホーチミン

ホーチミン長期出張の日記です

java8 forEach

forEachの使用方法でラムダ式を用いた方法しか知らなかったので、メモしてみます。

リストに対して繰り返し処理ができる便利なforEachですが、ラムダ式のほかにメソッド参照「::」を用いた方法も。

メソッド参照

クラス名(インスタンス)::メソッド名

のように記述することで、メソッドの参照が可能

 

forEach例

list.forEach(System.out :: println);
list.forEach(x -> System.out.println(x));

 

使用例

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

        Main main = new Main();
        System.out.println("----No1----");
        main.test().forEach(main :: myPrint);
        System.out.println("----No2----");
        main.test().forEach(x -> main.myPrint(x));
        
    }
    
    public List<String> test(){
        List<String> list = new ArrayList<>();
        list.add("AA");
        list.add("BB");
        list.add("CC");
        list.add("DD");
        return list;
    }
    
    public void myPrint(String str){
        System.out.println(str);
    }
}

インスタンスの持つメソッドを呼び出す例ですが、実行結果はどちらも同じです。

 

実行結果

----No1----
AA
BB
CC
DD
----No2----
AA
BB
CC
DD

 

どちらがベターなんでしょうね。