ラムダを使ってリストをフィルタリングする方法

Java8では、Lambdaが導入され、Comparatorを作成せずにArrayListsをフィルタリングすることができます。

リストのストリームのフィルタメソッドは、条件を使用してフィルタリングできます。

構文:

list.stream().filter( p -> p <= 40 )

例:

40未満の値で整数のリストをフィルタリングすると仮定します。コードは最初にラムダ式を使用してフィルタリングし、出力に値を表示します。 Predicate <Integer>クラスのインスタンスです。 そのクラスには、条件が適用される場合にブール値を返すメソッドテストがあります。

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class LambdaFilterList {

	public static void main(String[] argv){
		
		List<Integer> list = Arrays.asList( 21, 45, 35, 55 );
		
		System.out.println( "With lambda expression:" );
		list.stream()
			.filter( p -> p  <= 40 )
			.forEach( o -> { 
				System.out.println( o );
			} );
		
		System.out.println( "With predicate:" );
		list.stream().filter( new IntFilter() )
			.forEach( o -> { 
				System.out.println( o );
			} );
	}
}

class IntFilter implements Predicate<Integer> {
	@Override
	public boolean test(Integer t){
    	return t.intValue() < 40;
    }
}

出力は次のようになります。

With lambda expression:
21
35
With predicate:
21
35

参考文献:

Lambda Expressions

最近のコメント