首页 > 其他 > 详细

Lambda表达式

时间:2019-12-28 00:24:18      阅读:135      评论:0      收藏:0      [点我收藏+]
package com.fgy.demo08;

/**
* 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法
* 使用Lambda必须具有上下文推断
*   也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例
* 有且仅有一个抽象方法的接口,称为“函数式接口”
*/
public class LambdaTest { public static void main(String[] args) { // 使用匿名内部类的方式实现多线程 new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + "创建新线程"); } }).start(); // 使用Lambda表达式 new Thread(() -> { System.out.println(Thread.currentThread().getName() + "创建新线程"); }).start(); } }
package com.fgy.demo08;

public interface Cook {
    public abstract void makeCook();
}



package com.fgy.demo08;

/**
 * Lambda表达式:是可推导,可以省略的
 * 凡是可以根据上下文推导出的内容都可省略
 * 可以省略的内容:
 *         1.(参数列表):括号中的参数类型可以省略
 *         2.(参数列表):如果参数只要一个,那么括号和参数类型都可以省略
 *         3.{一些代码}:如果{}中只有一行代码,无论是否有返回值,{}、return和分号都可以省略
 *              注意:{}、return和分号必须一起省略
 */
public class CookTest {
    public static void main(String[] args) {
        /*invokeCook(() -> {
            System.out.println("吃饭了");
        });*/

        invokeCook(() -> System.out.println("吃饭了"));
    }

    private static void invokeCook(Cook cook) {
        cook.makeCook();
    }
}
package com.fgy.demo08;

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

    public Person() {
    }

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

    public Integer getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

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



package com.fgy.demo08;

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

public class PersonTest {
    public static void main(String[] args) {
        Person[] persons = {
                new Person("lily", 28),
                new Person("sily", 19),
                new Person("jomn", 25),
        };

        /*Arrays.sort(persons, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge() - o2.getAge();
            }
        });*/

        // 使用Lambda表达式
        /*Arrays.sort(persons, (Person o1, Person o2) -> {
            return o1.getAge() - o2.getAge();
        });*/

        // Lambda表达式省略格式
        Arrays.sort(persons, (o1, o2) -> o1.getAge() - o2.getAge());

        for (Person person : persons) {
            System.out.println(person);
        }
    }
}

Lambda表达式

原文:https://www.cnblogs.com/roadlandscape/p/12110119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!