jdk1.8新特性之函数式接口

一、Lambda 表达式需要“函数式接口”的支持

函数式接口:接口中只有一个抽象方法的接口,则为函数式接口,可以使用注解@FunctionalInterface 修饰,

可以检查是否是函数式接口

 

二、java8 内置的四大核心函数式接口

 

Consumer<T> : 消费型接口

void accept(T t);

 

Supplier<T>:供给型接口

T get();

 

Function<T,R>:函数型接口

R apply(T t);

 

Predicate<T>:断言型接口

boolean test(T t);

 

eg: Comsumer<T> 消费型接口(有去无回)

public void happy(double money,Consumer(Double) con){
    con.accept(money);
}

@Test
public void test1(){
    happy(1000,(m)-> System.out.println("消费了" + m + "元"));
}

Supplier<T> 供给型接口

 

//需求:产生一些整数,并放入集合中
public List<Integer> getNumlist(int num,Supplier<Integer> sup){
    List<Integer> list = new ArrayList();
    for(int i=0; i<num;i++){
      Integer n =   sup.get();
      list.add(n);
    }
    return list;
}

@Test
public void test2(){
   List<Integer> numList =  getNumlist(10,()->(int) Math.random() *100));
   for(Integer num:numList){
       System.out.println(num);
   }
}

 

Function<T,R> 函数型接口

 //需求:用于处理字符串
 public String strHandler(String str,Function<String,String> fun){
     return fun.apply(str);
 }
 
 @Test
 public void test3(){
   String newStr =   strHandler("\t\t\t测试测试车 ",(str) -> str.trim());
   System.out.println(newStr);
   
  String subStr =  strHandler("测试测试车",(str) -> str.substring(0,1));
   System.out.prinln(subStr);
 }

 

Predicate<T> 断言型接口(用于判断)

//需求:将满足条件的字符串,放入集合中去
Public List<String> filterStr(List<String> list,Predicate<String> pre){
    List<String> strList = new ArrayList<>();
    for(String str:list){
        if(pre.test(str)){
            strList.add(str);
        }
    }
    return strList;
}

 

@Test
public void test4(){
    List<String> list = Arrays.asList("Hello","Test","Lambda","www");
    List<String> strList =  filterStr(list,(s)->s.length()>3);
    
    for(String str: strList){
        System.out.println(str);
    }
   
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值