Function接口
Function 接口输入一个参数,返回一个结果。
@Test
public void functionTest(){
Function<Integer, Float> function = a -> (float) (a * a);
System.out.println(function.compose(b-> (Integer) b+10).andThen(a->a+a).apply(10));
}
console:
800
上面第二行代码方法有执行顺序 compose -> apply -> andThen
BiFunction接口
与Function接口不同的是,BiFuction 有两个输入参数,返回一个结果。
@Test
public void biFunctionTest(){
BiFunction<String, String, String> biFunction = (a, b )-> a;
System.out.println(biFunction.apply("hello", "world"));
}
console:
hello
Supplier接口
没有输入参数,会返回一个结果
@Test
public void supplierTest(){
Supplier<String> supplier = ()->"ccc";
System.out.println(supplier.get());
}
console:
ccc
Predicate接口
@Test
public void predicateTest(){
List<String> list = Lists.list("test", "test1", "test2");
//判断是否为test
Predicate<String> predicate = "test"::equalsIgnoreCase;
List<String> filterList = list.stream().filter(predicate).collect(Collectors.toList());
System.out.println(filterList);
}
console:
[test]
Consumer接口
@Test
public void consumerTest(){
//函数方法应该是无返回的
Consumer<String> consumer = c-> System.out.println(c+" consumer");
consumer.accept("a");
}
console:
a consumer