这篇文章主要讲解了Java中如何使用Lambda表达式,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
在了解Lambda表达式之前我们先来区分一下面向对象的思想和函数式编程思想的区别
面向对象的思想:
做一件事情,找一个能解决这个事情的对象,调用他的方法来解决
函数时编程思想:
只要能获取到结果,谁去做的都不重要,重视的是结果,不重视过程
使用Lambda表达式的目的是为了简化我们的代码
匿名内部类虽然也简化了我们的代码,但是Lambda比他更简单,而且语法也更加少
下面我用一段代码来演示一下二者的区别
public class Main { public static void main(String[] args) { //匿名内部类的写法 new Thread(new Runnable() { @Override public void run() { System.out.println("这是匿名内部类"); } }).start(); //Lambda表达式 new Thread(()-> System.out.println("这是Lambda表达式")).start(); } }
结果
我们可以看到Lambda大大的减少了代码量,因为Lambda关心的是结果并不是过程,省略的东西他都可以自行推导出来
Lambda的标准格式
Lambda省去面向对象的条条框框,格式有三个部分组成
一些参数
一个箭头
一段代码
(参数类型 参数名称)——>{代码语句}
小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。 -> 是新引入的语法格式,代表指向动作。 大括号内的语法与传统方法体要求基本一致。
下面用两个案例来演示Lam打表达式
Calculator接口
package Lambda; public interface Calculator { int sum(int a,int b); }
package Lambda; import Rubable.RunableImp; import java.sql.SQLOutput; public class Main { public static void main(String[] args) { sum(10,20,((a, b) -> a+b)); } public static void sum(int a,int b,Calculator calculator){ int sum=calculator.sum(a,b); System.out.println("和为:"+sum); } }
结果
Comparator接口
当一个对象数组需要进行排序的时候Array.sort需要一个Comparator接口来指定排序的规则
package Lambda; import java.util.Arrays; public class Main { public static void main(String[] args) { Student[] studentArray={new Student("张三",18), new Student("李四",8), new Student("王五",55)}; Arrays.sort(studentArray,(one,two)->one.getAge()-two.getAge()); for (Student student : studentArray) { System.out.println(student); } }
package Lambda; public class Student { private String name; private int age; @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, int age) { this.name = name; this.age = age; } }
结果
排序成功
Lambda的省略规则
Lambda'的使用前提
有且只有一个抽象方法的接口,称为函数式接口
看完上述内容,是不是对Java中如何使用Lambda表达式有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。