JUC并发编程学习(十一)四大函数式接口(必备)

打印 上一主题 下一主题

主题 861|帖子 861|积分 2583

四大函数式接口(必备)

程序员:泛型、反射、注解、枚举
新时代程序员:lambda表达式、链式编程、函数式接口、Stream流式计算
函数式接口:只有一个方法的接口
  1. @FunctionalInterface
  2. public interface Runnable {
  3.     public abstract void run();
  4. }
  5. //@FunctionalInterface 函数式接口,超级多
  6. //简化编程模型,在新版本的框架中大量应用!
  7. //foreach(消费者类的函数式接口)
复制代码

四大函数式接口:Consumer、Function、Predicate、Supplier
Function


  • Function 函数式接口 R apply(T t); 输入一个T类型的参数,返回一个R类型的值
  • 只要是函数式接口都可以用lambda表达式简化
简化前:
  1. Function ft = new Function<String,String>() {
  2.     @Override
  3.     public String apply(String str) {
  4.         return str;
  5.     }
  6. };
复制代码
简化后:
  1. Function ft = (str)->{return str;};
复制代码
更加简化后:
  1. Function ft = str->{return str;};
复制代码
Predicate


  • Predicate 断定型接口 有一个输入参数,返回类型只能是boolean值
  • 同样是一个函数式接口,可以简化
    简化前:
    1. Predicate<String> pr = new Predicate<String>() {
    2.     @Override
    3.     public boolean test(String str) {
    4.         return str.isEmpty();
    5.     }
    6. };
    复制代码
    简化后:
    1. Predicate<String> pr = str ->{return str.isEmpty();};
    复制代码
Comsumer


  • Comsumer 消费者接口 有一个输入参数,没有返回值
  • 同样可以简化
简化前:
  1. Consumer<String> stringConsumer = new Consumer<>() {
  2.     @Override
  3.     public void accept(String s) {
  4.         System.out.println(s);
  5.     }
  6. };
复制代码
简化后:
  1. Consumer<String> stringConsumer = str ->{
  2.     System.out.println(str);
  3. };
复制代码
Supplier


  • Supplier 供给者接口 没有参数只有一个返回值
  • 同样可以简化
简化前:
  1. Supplier<String> stringSupplier = new Supplier<>() {
  2.     @Override
  3.     public String get() {
  4.         return "我的世界";
  5.     }
  6. };
复制代码
简化后:
  1. Supplier<String> stringSupplier = ()->{return "我的世界";};
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表