Java详解Lambda表达式(附有代码+案例)

二十.Lambda表达式

20.1 概述

  • 函数式编程是一种思想特点。
  • 函数式编程,忽略面向对象的复杂语法,强调做什么,而不是谁去做。
  • Lambda表达式就是函数式思想的体现。

Lambda表达式的格式:

( ) ->{
  
}

():对应着方法的形参
->:固定格式
{}:方法体

20.2 重载sort方法

 //重载sort
Arrays.sort(arr3, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
              //o1-o2:升序排列
              //o2-o1:降序排列
                return o2-o1;
            }
        });
===========================================
  //改写成Lambda表达式:
Arrays.sort(arr4,(Integer o1, Integer o2)-> {
                return o2-o1;
            }
        );

注意点:

  • Lambda表达式基本作用:可以简化匿名内部类的书写

  • Lambda表达式只能简化函数式接口的匿名内部类的写法

  • 函数式接口:有且仅有一个抽象方法的接口。

    接口上方可以加@FunctionalInterface

  • Lambda表达式使用前提:接口必须是匿名内部类,接口中只能有一个抽象方法。

public class Test {
    public static void main(String[] args) {
      
      
         //调用一个方法时,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
        //匿名内部类写法
      // method(new Swim() {
      //     @Override
      //     public void swimimg() {
      //         System.out.println("正在游泳Img...");
      //     }
      // });

        // lambda表达式
        method(
                ()->{
            System.out.println("游泳Img...");
                }
        );

    }
  //调用一个方法时,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
    public static void method(Swim s){
        s.swimimg();
    }
}
interface Swim{
    public abstract void swimimg();
    }
import java.util.Arrays;
import java.util.Comparator;
public class Test02 {
    public static void main(String[] args) {

        String[] strArr ={"a","aaa","aa"};

        // 匿名内部类写法
        Arrays.sort(strArr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        });
  System.out.println(Arrays.toString(strArr));//[a,aa aaa]

        // lambda表达式完整格式
        Arrays.sort(strArr, (String o1, String o2)->{
                return o1.length()-o2.length();
            }
        );
  System.out.println(Arrays.toString(strArr));//[a,aa,aaa]

        // lambda表达式简写
  Arrays.sort(strArr, ( o1,  o2)->o1.length()-o2.length());
  System.out.println(Arrays.toString(strArr));//[a,aa,aaa]
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔚一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值