lambda表达式使用举例
lambda表达式是java8中的一个新特性
什么是lambda表达式?
lambda表达式就是一个函数式接口的实例化对象
- 在很多其他的面向函数编程的语言中我们的lambda表达式就是一个函数,而在java语言中我们的lambda表达式是一个对象 — > 是函数式接口的实例化对象
- java语言在发行时就提出了 “万事万物皆为对象” 等核心思想
java中为什么要引入lambda表达式?
- 随着最近几年比如Python语言等面向函数编程的语言的火速崛起,这个时候我们的java语言就要面临这些语言的发展所带来的挑战,这个时候我们的java就需要引入一些其他语言中的优点,这个时候我们就引入了lambda表达式
- 但是在Python语言中lambda表达式是以函数的形式而存在的,但是在java中我们的lambda表达式是以对象的形式存在的,我们的java中的lambda表达式要依附于函数式接口
lambda表达式的使用举例:
首先我们要知道lambda表达式是在什么时候使用
- 其实lambda表达式是为了快速产生一个接口的实现类对象 — > 我们就可以将lambda表达式看成是一个内部类的简化
使用情景一: — > 创建Runnable接口的实现类时
这里我们使用一般的方式: —> 也就是使用匿名内部类的方式创建一个Runnable接口的实现类的对象
package Lambda表达式;
public class Demo {
public static void main(String[] args) {
/*
这里我们使用匿名内部类的方式创建了一个Runnable接口的实现类的对象
*/
Runnable runnable = new Runnable(){
@Override
public void run() {
System.out.println("我爱北京天安门");
}
};
//然后我们调用了Runnable接口中的run()方法 --- > 这个方法中执行的就是我们当前线程要执行的操作
//实现Runnable接口的方式是我们创建多线程的方式二:
runnable.run();
}
}
这里我们使用lambda表达式的方式创建这个Runnable接口的实现类的对象
package Lambda表达式;
public class Demo2 {
public static void main(String[] args) {
Runnable runnable = () -> {
System.out.println("我爱北京天安门");
};
runnable.run();
}
}
使用情景二: -----> 创建Comparator接口的实例化对象
首先这里我们先通过使用匿名内部类的方式创建Comparator接口的实例化对象
package Lambda表达式;
import java.util.Comparator;
public class Demo3 {
public static void main(String[] args) {
//这个时候我们创建了一个Comparator类对象,且我们指定了泛型Integer
Comparator<Integer> comparator = new Comparator<>(){
@Override
public int compare(Integer o1 , Integer o2){
//我们在这个重写的Comparator接口中的compare()方法中调用了Integer类中的compare()静态方法进行比较
return Integer.compare(o1,o2);
}
};
System.out.println(comparator.compare(1, 2));
}
}
这里我们使用lambda表达式的方式创建Comparator接口实现类的对象
package Lambda表达式;
import java.util.Comparator;
public class Demo4 {
public static void main(String[] args) {
Comparator<Integer> comparator = (o1,o2) -> {
return Integer.compare(o1,o2);
};
System.out.println(comparator.compare(1, 2));
}
}
- 这里我们要说: 如果我们要删除 ->右边的{} ,这个时候我们一定要将return一起删掉, 如果我们只删除了 {}或者只删除了return,这个时候编译就会报错