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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值