java学习基地

微信扫一扫 分享朋友圈

已有 1161 人浏览分享

java8 Lambda表达式的使用总结

[复制链接]
1161 2
简介:
Lambda是一个藏名函数,我们能够把Lambda表达式了解为是冶能够通报的代码(将代码像数据一样停止通报)。利用它能够写出更简约,更灵敏的代码。

案例:
话未几道,间接先勘魁子:

语法格局一:无参,无返回值

起首我们先正在单位测试内写出我们的本初代码:
界说一个Run接心,内里只要一running(无参)办法
  1. interface Run{
  2.   void running();
  3. }
赶钙代码
给出初初单位测试,完成Run接心的藏名完成类


  1. @Test
  2.   public void test01() {
  3.     Run runner=new Run() {
  4.       @Override
  5.       public void running() {
  6.         System.out.println("仁攀类会跑步");
  7.       }
  8.     };
  9.     runner.running();
  10.   }
赶钙代码
上面即是lambda表达式的利用(挨印成果皆是分歧):

利用lambda表达式时可写成:
  1. @Test
  2.   public void test02() {
  3.     Run runner=()->System.out.println("仁攀类会跑步");
  4.     runner.running();
  5.   }
赶钙代码
语法格局两:有一参,无返回值

起首是接心:
  1. interface Run{
  2.   void running(String name);
  3. }
赶钙代码
藏名完成类:
  1. @Test
  2.   public void test07() {
  3.     Run runner=new Run() {
  4.       @Override
  5.       public void running(String name) {
  6.         System.out.println(name+"能跑步");
  7.       }
  8.     };
  9.     runner.running("小邱");
  10.   }
赶钙代码
lambda表达式:
  1. @Test
  2.   public void test08() {
  3.     Run runner=(String name)->System.out.println(name+"能跑步");
  4.     runner.running("小邱");
  5.   }
赶钙代码
借可间接将数据范例省略,由于能够由编译器揣度得出,称为“范例揣度”

  1. @Test
  2.   public void test08() {
  3.     Run runner=(name)->System.out.println(name+"能跑步");
  4.     runner.running("小邱");
  5.   }
赶钙代码
只要一个参数时,可省略小括号:
  1. @Test
  2.   public void test09() {
  3.     Run runner=name->System.out.println(name+"能跑步");
  4.     runner.running("小邱");
  5.   }
赶钙代码
语法格局三:有两参,无返回值

仍是谁人接心,正在其办法中参加两个参数
  1. interface Run{
  2.   void running(String name,int distance);
  3. }
赶钙代码
其本藏名完成类:
  1. @Test
  2.   public void test01() {
  3.     Run runner=new Run() {
  4.       @Override
  5.       public void running(String name,int distance) {
  6.         System.out.println(name+"能跑"+distance+"千米");
  7.       }
  8.     };
  9.     runner.running("小邱",100);
  10.   }
赶钙代码
利用lambda表达式:
  1. @Test
  2.   public void test06() {
  3.     Run runner=(String name,int distance)->System.out.println(name+"能跑"+distance+"千米");
  4.     runner.running("小邱",100);
  5.   }
赶钙代码
借可间接将数据范例省略,由于能够由编译器揣度得出,称为“范例揣度”
  1. @Test
  2.   public void test02() {
  3.     Run runner=(name,distance)->System.out.println(name+"能跑"+distance+"千米");
  4.     runner.running("小邱",100);
  5.   }
赶钙代码
格局四:有两参,有返回值

那里我们利用java中的Comparator接心去做为例子:
比力传进的两个数的巨细
  1. @Test
  2.   public void test03() {
  3.     Comparator<Integer> com1=new Comparator<Integer>() {
  4.       @Override
  5.       public int compare(Integer o1, Integer o2) {
  6.         return Integer.compare(o1, o2);
  7.       }
  8.     };
  9.     int compare1=com1.compare(10, 20);
  10.     System.out.println(compare1);
  11.   }
赶钙代码
根据格局两中的写法即可以写成:

  1. @Test
  2.   public void test04() {
  3.     Comparator<Integer> com1=(o1,o2)->Integer.compare(o1, o2);
  4.     int compare1=com1.compare(10, 20);
  5.     System.out.println(compare1);
  6.   }
赶钙代码
假如用办法援用(挪用类中静态办法)的话就能够写成:
  1. @Test
  2.   public void test05() {
  3.     Comparator<Integer> com1=Integer::compare;
  4.     int compare1=com1.compare(10, 20);
  5.     System.out.println(compare1);
  6.   }
赶钙代码
格局五:多参,多条语句

藏名完成类:
  1. @Test
  2.   public void test07() {
  3.     Comparator<Integer> com1=new Comparator<Integer>() {
  4.       @Override
  5.       public int compare(Integer o1, Integer o2) {
  6.         System.out.println(o1);
  7.         System.out.println(o2);
  8.         return o1.compareTo(o2);
  9.       }
  10.     };
  11.   }
赶钙代码
lambda表达式:
  1. @Test
  2.   public void test08() {
  3.     Comparator<Integer> com1=(o1,o2)->{
  4.       System.out.println(o1);
  5.       System.out.println(o2);
  6.       return o1.compareTo(o2);
  7.     };
  8.   }
赶钙代码
总结:

1)举例:(o1,o2)->Integer.compare(o1,o2);
2)格局:
  1. “->”:lambda操纵符 或 箭头彩琴做符
  2. "->"右边:lambda形参列表(便是接心中的笼统办法的形参列表)
  3. "->"右侧:lambda体(便是重写的笼统办法的办法体)
赶钙代码
3)
  1. ->右边:lambda形参列表的参数范例能够省略(范例揣度):假如lambda形参列表只要一个参数,其小括号也能够省略。
  2. ->右侧:lambda体该当由冶{}包裹,假如lambda题只要一条施行语句,那末能够省略{}
赶钙代码
4)lambda的素质:做为接心的真例。





举报 使用道具

回复

评论 2

xiaofan168  vip终身会员  发表于 2020-12-22 19:16:39 | 显示全部楼层
我也顶起出售广告位

举报 使用道具

回复
流年  vip终身会员  发表于 2020-12-22 19:37:41 | 显示全部楼层
鄙视楼下的顶帖没我快,哈哈

举报 使用道具

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

本版积分规则

0

关注

0

粉丝

138

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Archiver|手机版|java学习基地 |网站地图

GMT+8, 2021-3-1 05:07 , Processed in 0.734375 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.