JUC并发编程学习(十一)四大函数式接口(必备)
四大函数式接口(必备)
程序员:泛型、反射、注解、枚举
新时代程序员:lambda表达式、链式编程、函数式接口、Stream流式计算
函数式接口:只有一个方法的接口
@FunctionalInterface public interface Runnable { public abstract void run(); } //@FunctionalInterface 函数式接口,超级多 //简化编程模型,在新版本的框架中大量应用! //foreach(消费者类的函数式接口)
四大函数式接口:Consumer、Function、Predicate、Supplier
Function
- Function 函数式接口 R apply(T t); 输入一个T类型的参数,返回一个R类型的值
- 只要是函数式接口都可以用lambda表达式简化
简化前:
Function ft = new Function<String,String>() { @Override public String apply(String str) { return str; } };
简化后:
Function ft = (str)->{return str;};
更加简化后:
Function ft = str->{return str;};
Predicate
-
Predicate 断定型接口 有一个输入参数,返回类型只能是boolean值
-
同样是一个函数式接口,可以简化
简化前:
Predicate<String> pr = new Predicate<String>() { @Override public boolean test(String str) { return str.isEmpty(); } }; 简化后:
Predicate<String> pr = str ->{return str.isEmpty();};
Comsumer
- Comsumer 消费者接口 有一个输入参数,没有返回值
- 同样可以简化
简化前:
Consumer<String> stringConsumer = new Consumer<>() { @Override public void accept(String s) { System.out.println(s); } };
简化后:
Consumer<String> stringConsumer = str ->{ System.out.println(str); };
Supplier
- Supplier 供给者接口 没有参数只有一个返回值
- 同样可以简化
简化前:
Supplier<String> stringSupplier = new Supplier<>() { @Override public String get() { return "我的世界"; } };
简化后:
Supplier<String> stringSupplier = ()->{return "我的世界";};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步