使用Java8,已经引入了Lambda,并允许过滤ArrayList而不创建一个Comparator。
列表中Stream的过滤方法可以使用条件进行过滤。
list.stream().filter( p -> p <= 40 )
假设我们要对小于40的值过滤整数列表。代码首先使用Lambda表达式进行过滤,并在输出中显示值。
代码然后执行相同的事情传递 谓词<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