Lambda入门

72 阅读1分钟

浅薄理解

在之前的面试中被问过一个数组过滤问题,用代码一行写出来。第一时间想到了Lambda表达式,但我不会(Java8 出来多久了,Lambda表达式还不会。。。 Lambda表达来自于函数式编程思想,函数就是给我一些输入量我通过一些操作给你想要的输出量。在我们使用lambda表达式以后,可以用一段函数来替代一个对象所需要做的事。有些对象我们可能只需要使用一次,我们使用lambda表达式就可以省略很多不必要的代码。

简单使用

Java8 之前可以这样创建一个线程:

new Thread(new Runnable() {
   @Override
   public void run() {
      System.out.println("这是一个线程");
   }
}).start();

有了Lambda之后我们可以这样创建一个线程:

new Thread(()->{
   System.out.println("这也是一个线程");
}).start();

比较器案例:

Collections.sort(list, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2-o1;
    }
});

Collections.sort(list,(o1, o2) -> o2-o1);

lambda的写法()->{},()里面写形参 {}里面写方法的具体内容。

  • ()小括号中的参数类型可以省略;
  • 小括号中有且只有一个参数的时候小括号可以省略;
  • 如果大括号中有且只有一个语句,那么return、{}、分号可以省略;

lambda的使用条件:

首先,都是接口;

其次,接口中有且只有一个接口,才可以使用lambda表达式

适用于去简写,需要使用接口中只有一个抽象方法的实例。如Runnable、和比较器的简写。

tip: 每天一个小知识点,一点一点慢慢进步