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