1.消费型接口—有入参无返回值
Consumer<T>
void accept(T t);
测试案例:
@Test
public void test1(){
consumer(200,(m)-> System.out.println("shopping消费:"+m));
}
public void consumer(double money, Consumer<Double> con){
con.accept(money);
}
2.供给型接口—无入参有返回值
* Supplier<T>
* T get();
测试案例:
@Test
public void test2(){
List<Integer> num = getNum(5, () -> (int) (Math.random() * 100));
for (Integer integer : num) {
System.out.println(integer);
}
}
public List<Integer> getNum(int num, Supplier<Integer> sup){
List<Integer> list=new ArrayList<>();
for (int i=0;i<num;i++){
Integer integer = sup.get();
list.add(integer);
}
return list;
}
3.函数型接口—有入参有返回值
Function<T,R>
R apply(T t);
测试案例:
@Test
public void test3(){
String helloworld = strHandel("helloworld ", (s) -> s.substring(1));
System.out.println(helloworld);
}
public String strHandel(String str, Function<String,String> fun){
return fun.apply(str);
}
4.断言型接口—有入参返回布尔类型,处理判断条件
Predicate<T>
boolean test(T t);
@Test
public void test4(){
List<String> gets = gets(Arrays.asList("java", "qw", "ffff"), (s) -> s.length() > 3);
gets.forEach(System.out::println);
}
public List<String> gets(List<String> s, Predicate<String> predicate){
List<String> strings=new ArrayList<>();
for (String s1 : s) {
if (predicate.test(s1)){
strings.add(s1);
}
}
return strings;
}