lambda表达式概述与使用举例 [Java]

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,这个时候编译就会报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值