1、消费型接口:void accept(T t);
public class ConsumerTest{
/**
* 消费性接口:接收一个参数,无返回值
*/
@Test
public void consumerTest() {
Consumer<String> consumer = s -> System.out.println(s);
consumer.accept("参数值");
}
}
2、供给型接口:Supplier:T get();
public class SupplierTest{
/**
* 供给型接口:没有参数,有返回值
*/
@Test
public void supplierTest(){
List<Integer> numList = getNumList(5,()->(int)(Math.random()*10));
System.out.println(numList);
}
public List<Integer> getNumList(int num, Supplier<Integer> supplier){
List<Integer> numList = new ArrayList<>();
for (int i = 0; i < num; i++) {
numList.add(supplier.get());
}
return numList;
}
}
3、功能型接口: R apply(T t);
public class FunctionTest{
/**
* 功能型接口:接收一个参数,有返回值
* Function<T,R> {
* R apply(T t)
* }
*/
@Test
public void functionTest(){
String newStr = handleStr("abc",s->s.toUpperCase());
System.out.println(newStr);
}
public String handleStr(String str, Function<String,String> fuc){
return fuc.apply(str);
}
}
4、断言型接口:boolean test(T t)
public class PredicateTest{
/**
* 断言型接口:接收一个参数,返回boolean值
* Predicate<T> test(T t);
*/
@Test
public void predicateTest(){
List<String> list =
Arrays.asList("java","Tom","lambda","python","is","love");
List<String> filterList = filterList(list,s -> s.length()>3);
System.out.println(filterList);
}
public List<String> filterList(List<String> list, Predicate<String> predicate){
List<String> filsterList = new ArrayList();
for(String str : list){
if (predicate.test(str)){
filsterList.add(str);
}
}
return filsterList;
}
}