Java—JDK8新特性—Lambda表达式【内含思维导图】

这篇具有很好参考价值的文章主要介绍了Java—JDK8新特性—Lambda表达式【内含思维导图】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

JDK8新特性

2.Lambda表达式

思维导图

2.1 什么是Lambda表达式

2.2 为什么使用Lamdba表达式

2.3 Lambda表达式基本语法

2.4 类型推断

2.5 Lambda练习

2.6 Lambda常用场景


JDK8新特性

        官网提供网址:JDK 8 Features

Java—JDK8新特性—Lambda表达式【内含思维导图】


2.Lambda表达式

思维导图

Java—JDK8新特性—Lambda表达式【内含思维导图】

2.1 什么是Lambda表达式

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

2.2 为什么使用Lamdba表达式

       更加简洁的编写方式

2.3 Lambda表达式基本语法

(参数类型 参数名称,...) -> {
        代码体;
        [return 值;]
    }

        (参数类型 参数名称,...) : 指定了Lambda表达式所需要的参数列表

        { }:指定了Lambda体,是抽象方法的实现逻辑,Lambda表达式要执行的功能

        ->:Lambda操作符,箭头操作符,分隔参数列表和Lambda体

2.4 类型推断

        Lambda表达式中的参数类型都是由编译器推断得出,Lambda表达式中无需指定类型,程序依然可以翻译。

        因为Javac会根据程序的上下文环境,在后台推断出参数类型,这就是“类型推断

2.5 Lambda练习

案例1:

interface Fiyable {
    void flying();
}

public class LambdaExpressionNoArg {
    public static void main(String[] args) {
        fly(new Fiyable() {
            @Override
            public void flying() {
                System.out.println("I can fly");
            }
        });

        //1.无参无返回值
        fly(() ->{
                System.out.println("I can fly");

        });
    }

    public static void fly(Fiyable f) {
        f.flying();
    }
}

运行结果:

Java—JDK8新特性—Lambda表达式【内含思维导图】

如何使用Lambda表达式:

Java—JDK8新特性—Lambda表达式【内含思维导图】

案例2:

interface Sayable{
    void say(String name);
}
public class LambdaExpressionOneArg {

    public static void main(String[] args) {
        talk(new Sayable() {
            @Override
            public void say(String name) {
                System.out.println("name:" + name);
            }
        });
        //2.一个参无返回值
        talk((String name) ->{
                System.out.println("name:" + name);
        });
        //3.数据类型可以省略
        talk(( name) ->{
            System.out.println("name:" + name);
        });
        //4.只有一个参数,括号可以省略
        talk( name ->{
            System.out.println("name:" + name);
        });
        //5,如果Lambda体只有一条语句,{}; 可以省略
        talk( name -> System.out.println("name:" + name));
    }

    public static void talk(Sayable sayable) {
        sayable.say("张三");
    }
}

 运行结果:

Java—JDK8新特性—Lambda表达式【内含思维导图】

2.6 Lambda常用场景

        排序场景、

        如果一个对象是函数式接口的实例,那么该对象就可以用Lambda表达式,用匿名实现类表示的地方都可以用Lambda表达式替换

案例3:

先定义一个Person类

/**
 * 对这个对象进行,按照年纪排序
 */
public class Person {
    private String name;
    private int age;
    private int height;

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

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getHeight() {
        return height;
    }

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

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

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

在写一个LambdaExpressionExercise类,完成对Person对象,进行按照年龄排序

public class LambdaExpressionExercise {

    public static void main(String[] args) {

        List<Person> persons = new ArrayList<>();

        persons.add(new Person("张三",20,170));
        persons.add(new Person("李四",19,170));
        persons.add(new Person("王五",18,170));

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

        Collections.sort(persons, (o1, o2) -> o1.getAge()-o2.getAge());

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

运行结果

Java—JDK8新特性—Lambda表达式【内含思维导图】文章来源地址https://www.toymoban.com/news/detail-435617.html

到了这里,关于Java—JDK8新特性—Lambda表达式【内含思维导图】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java8新特性-Lambda表达式

    Lambda表达式 Lambda是一个匿名函数, 可以把lambda表达式理解为是一段可以传递的代码,(将代码像数据一样传递) 变化 需求: 求 薪资高于5000的员工信息 Lambda基本语法 在 java8 中引入了一个新的操作符 \\\"-\\\" , 箭头操作符, 箭头操作符 将Lambda表达式拆分为两部分: 左侧: Lambda表达式的参

    2024年02月01日
    浏览(38)
  • Java 8 新特性——Lambda 表达式(2)

            Java Stream函数式编程接口最初在Java 8中引入,并且与 lambda 一起成为Java开发里程碑式的功能特性,它极大的方便了开放人员处理集合类数据的效率。         Java Stream就是一个数据流经的管道,并且在管道中对数据进行操作,然后流入下一个管道。有学过linux

    2024年02月11日
    浏览(38)
  • Java8新特性—Lambda表达式

    Java 8是Java编程语言的一个版本,于2014年发布。它引入了许多新的特性和改进。 Lambda表达式是Java 8中引入的一个重要的新特性,它提供了一种更加简洁、灵活的方式来编写函数式接口的实现,从而提高了代码的可读性和简洁性。 在本文中,我们将介绍Lambda表达式的基本语法、

    2024年02月03日
    浏览(42)
  • Java8新特性1——函数式接口&lambda表达式

    注:以下内容基于Java 8,所有代码都已在Java 8环境下测试通过 目录: Java8新特性1——函数式接口lambda表达式 Java8新特性2——方法引用 Java8新特性3——Stream 如果在一个接口中, 有且只有一个抽象方法 ,则该接口被称为函数式接口。如: 注: 可以在接口前使用 @FunctionalInt

    2024年02月10日
    浏览(43)
  • Java 8及以上新特性:Lambda表达式、Stream API、Optional类与接口默认方法(四)

    目录 一、接口默认方法 1.1 概念解析: 1.2 应用场景: 1.3 使用注意事项: 1.4 使用示例: 二、结论 1.1 总结Java 8及以上版本四大新特性的重要意义与价值: 1.2 鼓励读者积极学习并运用这些新特性: 1.3 对未来Java版本可能引入的新特性进行展望: 1.1 概念解析: 接口默认方法

    2024年04月13日
    浏览(40)
  • C++11新特性lambda 表达式

    Lambda 表达式的基本语法是:[] (参数列表) - 返回值类型 {函数体}。 方括号([])表示捕获列表,用来指定在 lambda 表达式中可以访问的外部变量。 参数列表和返回值类型与普通函数的参数列表和返回值类型相同。 函数体则是实际的代码逻辑。 不接受任何参数:[] { 函数体 } 接受

    2024年02月14日
    浏览(35)
  • java学习路程之篇三、进阶知识、面向对象高级、接口新特性、代码块、内部类、Lambda表达式、窗体、组件、事件

    概述 生成值类型响应式数据 通过 .value 值修改 生成对象和数组类型的响应式对象选用 reactive 方式比较好 html JavaScript 概述 reactive 方法根据传入的对象,创建返回一个深度响应式对象。响应式对象看起来和传入的对象一样。但是,响应式对象属性值改动,不管层级有多深,都

    2024年02月16日
    浏览(37)
  • C11新特性之Lambda表达式

    优点:  1.可以定义简短的函数。 2.使用lambda表达式使代码更紧凑,可读性更好。 语法: [] 表示不捕获任何变量 [this] 表示值传递方式捕捉当前的 this 指针  [] 表示引用传递方式捕捉所有父作用域的变量(包括 this ) [var] 表示 引用传递 捕捉变量 var [=] 表示值传递方式捕获所

    2023年04月22日
    浏览(40)
  • 【C++干货铺】C++11新特性——lambda表达式 | 包装器

    ========================================================================= 个人主页点击直达:小白不是程序媛 C++系列专栏:C++干货铺 代码仓库:Gitee ========================================================================= 目录 C++98中的排序 lambda表达式 lambda表达式语法 表达式中的各部分说明 lambda表达式的使

    2024年01月21日
    浏览(41)
  • 进阶JAVA篇- Lambda 表达式与 Lambda 表达式的省略规则

    目录         1.0 什么是 Lambda 表达式?         1.1 既然跟匿名内部类相关,先来回顾匿名内部类。          1.2 Lambda 表达式与匿名内部类之间的关系。         1.3 函数式接口         1.4 在具体代码中来操作一下         2.0 Lambda 表达式省略规则          Lambda 表达

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包