前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java8-Lambda表达式-函数式接口

Java8-Lambda表达式-函数式接口

作者头像
Erwin
发布2020-06-02 15:24:41
6490
发布2020-06-02 15:24:41
举报
文章被收录于专栏:啸天"s blog

1. Java内置的四大核心函数式接口

代码语言:javascript
复制
Consumer<T>  消费型接口 消费对象
 void accept(T t);
Supplier<T>  供给型接口 生成对象
 T get();
Function<R,T>  函数型接口 指定特定功能
 R apply(T t);
Predicate<T>  断言型接口 进行条件判断
 boolean test(T t);
1.1. 消费型接口

void accept(T t); Consumer 消费型接口

代码语言:javascript
复制
// Consumer<T> 消费型接口
 @Test
 public void testConsumer(){
 //此时的(d) 小括号里有参数
 //原因是因为 Consumer接口有参数
 //void accept(T t);

 consume(1000,(d)-> System.out.println(d));
 }
 public void consume(Integer n , Consumer<Integer> con){
 //函数接口接收 消费 形参n
 con.accept(n);
 }
1.2. 供给型接口

Supplier 供给型接口 T get(); 小括号无参数

代码语言:javascript
复制
// Supplier<T>  供给型接口
 @Test
 public void testSupplier(){
 //T get(); 小括号无参数
 List<Integer> numList = getNumList(10,() -> (int)(Math.random()*101));
 for ( Integer i: numList
 ) {
 System.out.println(i);
 }

 }
 //调用此方法时,第二个参数提供一个数字集合
 public List<Integer> getNumList(int n, Supplier<Integer> sup){
 List<Integer> numList = new ArrayList<>();

 for (int i = 0; i < n; i++){
 numList.add(sup.get()); //通过get方法得到数字 存到numList
 }
 return numList;
 }
1.3. 函数型接口

Function<R,T> 函数型接口 特定功能

代码语言:javascript
复制
//Function<R,T>  函数型接口 特定功能
 @Test
 public void testFunction(){
 //将字符串转成大写
 String str1 = strHandler("ghslkajh", (s) -> s.toUpperCase());
 System.out.println(str1);
 }

 // Function<R,T> 函数型接口
 //定义一个处理字符串功能型接口函数
 public  String strHandler(String str, Function<String,String> fun){
 return fun.apply(str);
 }
1.4. 断言型接口

Predicate boolean test(T t); 返回boolean

代码语言:javascript
复制
//断言型接口  Predicate<T>
 // boolean test(T t);  返回boolean
 @Test
 public void testPredicate(){
 //返回长度大于3的字符串
 List<String> s1 = strFilter(Arrays.asList("huzhiqi", "adaad", "1231", "414441", "gagsgasg"), (s) -> s.length() > 3);
 System.out.println(s1); //[huzhiqi, adaad, 1231, 414441, gagsgasg]
 //返回包含d的字符串
 List<String> s2 = strFilter(Arrays.asList("huzhiqi", "adaad", "1231", "414441", "gagsgasg"), (s) -> s.contains("d"));
 System.out.println(s2); // [adaad]
 }
 //使用断言型接口过滤字符串
 public List<String> strFilter(List<String> strs, Predicate<String> pred){
 List<String>  list = new ArrayList<>();
 for (String s:strs
 ) {
 //利用断言型接口进行指定功能判断  即一个功能性条件判断
 if(pred.test(s)){
 //过滤功能
 list.add(s);
 }
 }
 return list;
 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Java内置的四大核心函数式接口
    • 1.1. 消费型接口
      • 1.2. 供给型接口
        • 1.3. 函数型接口
          • 1.4. 断言型接口
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档