下面是我归纳的一些核心函数式接口,
1. Consumer 消费型接口
void accept(T t) ,提供的是无返回值的抽象方法
2. Supplier 供给型接口
T get() , 提供的是有返无参的抽象方法
3. Function 函数型接口 T 是参数类型,R是返回值类型
R apply(T t) 提供的是 有参 有返的抽象方法.
4.Predicate 断言型接口
boolean test(T t) 提供的有参有返回的方法,返回的是boolean类型的返回值,,
上面就是lambda经常使用的函数接口了,下面我们来做一些演示
/**
* 消费演示
*/
@Test
public void Test_01(){
happy(1000.0,(m) -> System.out.println("爱怎么消费怎么消费Money="+(m-100)));
}
public void happy(Double money, Consumer consumer){
consumer.accept(money);
}
/**
* 需求 : 创建指定个数的整数,返回list的集合
*/
@Test
public void Test_02(){
List list = happy_02(10, () -> (int)(Math.random() * 100));
System.out.println("list="+list);
}
public List happy_02(int count, Supplier sup){
ArrayList lists = new ArrayList<>();
for (int i = 0; i < count; i++) {
int e = sup.get();
lists.add(e);
}
return lists;
}
/**
* 需求,写一个专门处理字符串的方法
*/
@Test
public void Test_03(){
String str = happy_04("美味的皮皮虾", (s) -> s.substring(1));
System.out.println("str="+str);
}
public String happy_04(String str , Function fun){
return fun.apply(str);
}
运行结果如下
/*
需求 :将满足条件的字符串放入集合中,
*/
@Test
public void Test04(){
List<String> list = Arrays.asList("zsss", "lsss", "ww", "zl", "tq", "jjj");
ArrayList<String> s1 = happy_05(list,(m) -> m.length() > 2);
System.out.println("list="+s1);
}
public ArrayList<String> happy_05(List<String> list,Predicate<String> predicate){
ArrayList<String> list2 = new ArrayList<String>();
for (String s : list) {
if(predicate.test(s)){
list2.add(s);
}
}
return list2;
}
以上就是一些常见的函数式接口,就说那么多啦