Lambda表达式

发布于:2024-09-05 ⋅ 阅读:(136) ⋅ 点赞:(0)

函数式编程

这是一种思想特点

面向对象:先找对象,让对象做事情,强调做什么,而不是谁去做

()->{ }

注意点:Lambda表达式可以用来简化匿名内部类的书写

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

函数式接口:

有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@Functionalinterface注解。

好处:

Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。

Lambda省略规则

1.参数类型可以省略不写。

2.如果只有一个参数,参数类型可以省略,同时()也可以省略。

3.如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,需要同时省略。

package test;

import java.util.Arrays;

public class Text1 {
    public static void main(String[] args) {
        Friend f1  = new Friend("zhang",20,1.74);
        Friend f2  = new Friend("song",21,1.75);
        Friend f3  = new Friend("liu",21,1.75);
        Friend f4  = new Friend("zhao",22,1.76);
        Friend[] arr = {f1,f2,f3,f4};
        Arrays.sort(arr, (o1, o2)->{
                double temp = o1.getAge() - o2.getAge();
                temp = temp == 0 ? o1.getHeight()-o2.getHeight():temp;
                temp = temp == 0 ? o1.getName().compareTo(o2.getName()):temp;
                if(temp >0){
                    return 1;
                }else if (temp<0){
                    return -1;
                }else {
                    return 0;
                }
        });
        System.out.println(Arrays.toString(arr));
    }
}
package test;

public class Friend {
    private String name;
    private int age;
    private double height;

    public Friend() {
    }

    public Friend(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    @Override
    public String toString() {
        return "Friend{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }
}