JAVA8——01-Lambda表达式

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);
经验分享 程序员 微信小程序 职场和发展