java Lambda

一、步骤

1、观察是否是函数式接口(接口只有一个抽象类  接口可以被 @FunctionalInterface 注解)做方法参数传递

2、如果是,用Lambda表达式

3、调用方法,以匿名内部类的形式传递参数

4、从new接口到重写方法的方法名,删除,在删除一个大括号

5、在重写方法的参数后面加上->

6、简写:参数类型可省略,若参数为一个,()可省略,若{}中只有一行代码{}可省略,若这行代码带return,retrun可省略

二、案例

1、自定义函数式接口

函数式接口

package com.wt.lambda;

@FunctionalInterface
public interface USB {
    public abstract void start();
}

主类

package com.wt.lambda;

public class UsbMain {
    public static void main(String[] args) {
        // lambda 且简写
        method(()-> System.out.println("鼠标开启"));
    }

    private static void method(USB usb) {
        usb.start();
    }
}

2、collection集合排序

javaBean

package com.wt.lambda;

import java.util.Objects;

public class Person {
    private String name;
    private Integer age;

    public Person() {

    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    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;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Objects.equals(name, person.name) && Objects.equals(age, person.age);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

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

主类

package com.wt.lambda;

import java.util.ArrayList;
import java.util.Comparator;

public class TestMain {
    public static void main(String[] args) {
        ArrayList<Person> list = new ArrayList<>();
        list.add(new Person("小心", 9));
        list.add(new Person("小葵", 2));
        list.add(new Person("正南", 8));
        // lambda 且简写
        list.sort((o1, o2) -> o1.getAge() - o2.getAge());
        System.out.println(list);
    }
}

 

posted @ 2025-04-20 21:43  市丸银  阅读(6)  评论(0)    收藏  举报