Lambda表达式
提示:以下是本篇文章正文内容,下面案例可供参考
一、lambda表达式
1.lambda是什么?
lambda是一个匿名函数、可以理解为lambda可以把一段代码当作参数去进行传递),使代码更加简洁化,lambda表达式依赖于函数式接口(接口中只有一个抽象方法的接口称为函数式接口,default,static都不包含在内)
lambda:
2.lambda表达式基础语法
引入新的操作符号 ->,此操作符号将lambda表达式分割为两部分、
左侧 :lambda表达式的参数,lambda依赖于函数式接口,接口中的参数即是lamdba中的参数
右侧 :表达式所需执行的功能
例子如下,lambda表达式,消费性接口
/*消费型接口: Consumer<T> void accept(T t);
// 系统定义的lambda接口,接收一个参数,做操作,无返回值*/
public static void main(String[] args) {
happy(1000000,(m) -> System.out.println("今晚消费赵公子买单!"));
}
public static void happy(double money, Consumer<Double> consumer){
consumer.accept(money);
}
Comsumer<T> 源码如下:
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
---此例子作为参考--------------------
3.lambda表达式的实际案例
--此案例参考于java8实战书籍
public class Students {
private String name;//姓名
private Integer age;//年龄
private Integer grade;//分数
public Students(String name, Integer age, Integer grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getGrade() {
return grade;
}
public void setGrade(Integer grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Students{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", grade=" + grade +
'}';
}
}
//使用
public static void main(String[] args) {
List<Students> list= Arrays.asList(new Students("小壮",4,100),
new Students("小梦",5,75),
new Students("小二",6,84),
new Students("小李",7,95),
new Students("小龙",5,78));
//取出分数大于80分的同学
List<Students> listscope=findScope(list);
for (Students students:listscope){
System.out.println(students.getName());
}
//lambda表达式(加stream)代码更加简介
list.stream().filter((a)->a.getGrade()>80)
.map(Students::getName).forEach(System.out::println);
}
private static List<Students> findScope(List<Students> list) {
List<Students> list1=new ArrayList<>();
for(Students students:list){
if(students.getGrade()>80){
list1.add(students);
}
}
return list1;
}
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
});
thread.run();
//lamdba表达式
new Thread(()->System.out.println(Thread.currentThread().getName())).run();
4.lambda表达式的语法
5 java8中常用的四大内置函数
## 6.lambda中方法引用 1:对象::实例方法名 2:类::静态方法名 3:类::实例方法名 list.stream().filter((a)->a.getGrade()>80)
.map(Students::getName).forEach(System.out::println);