首页 > 编程语言 >学习笔记-Java8新特性-第二节-Lambda表达式

学习笔记-Java8新特性-第二节-Lambda表达式

时间:2023-05-21 23:11:33浏览次数:34  
标签:System 接口 语法 println 第二节 Java8 表达式 Lambda

Lambda表达式

Lambda表达式是什么

  • Lambda是一个匿名函数

  • 是一段可以传递的代码

  • 是一种语法糖

  • 使用Lambda可以写出更简洁、更灵活的代码

  • 如果要使用Lambda表达式,需要函数式接口的支持

Lambda的语法格式

基础语法

  • Java8中引入了一个新的操作符->

    • 称为箭头操作符或Lambda操作符

    • 箭头左侧

      • Lambda表达式的参数列表
    • 箭头右侧

      • Lambda要实现的功能

      • 称为Lambda体

语法格式一:无参数无返回值

() -> ?;

示例:

() -> System.out.println("Hello Lambda!");

    public void test1() {
        Runnable r1 = () -> System.out.println("Hello Lambda!");
        r1.run();
    }

语法格式二:只有一条语句

(a) -> ?;

lambda体可以不用大括号

示例:

    public void test2() {
        Consumer<String> con = (x) -> System.out.println(x);
        con.accept("Lambda");
    }

语法格式三:若只有一个参数,则小括号可以省略不写

a -> ?;

示例:

    public void test3() {
        Consumer<String> con = x -> System.out.println(x);
        con.accept("Lambda");
    }

语法格式四:有多条语句

有多条语句时,lambda体必须用大括号

        Comparator<Integer> com = (x, y) -> {
            System.out.println("函数式接口");
            return Integer.compare(x, y);
        };

语法格式五:只有一条语句,需要返回值时

大括号和return都可以不写

Comparator<Integer> com = (x, y) -> Integer.compare(x, y);

语法格式六:Lambda表达式的参数列表的数据类型可省略

JVM可以通过上下文来推断出数据类型,称为类型推断

口诀

左右遇一括号省

左侧推断类型省

函数式接口

  • 若接口中只有一个抽象方法的接口,称为函数式接口

  • 可以使用@FunctionInterface进行修饰

  • 如果要使用Lambda表达式,需要函数式接口的支持

Java8中内置的四大核心函数式接口

  • Consumer<T> : 消费型接口

    • void accept(T t);
  • Supplier<T> : 供给型接口

    • T get();
  • Function<T, R> : 函数式接口

    • R apply(T t);
  • Predicate<T> : 断言型接口

    • boolean test(T t);

还有一些其他接口,用于满足其他需求

标签:System,接口,语法,println,第二节,Java8,表达式,Lambda
From: https://www.cnblogs.com/Andl-Liu/p/17419427.html

相关文章

  • 5-19打卡:lambda表达式
    Lambda表达式是C++11引入的一种非常方便和强大的功能,它允许你创建简洁、匿名的函数对象。在许多情况下,Lambda表达式可以使代码更简洁、易读。接下来,我会详细介绍C++Lambda表达式的基本概念、语法以及一些使用场景。Lambda表达式基本概念Lambda表达式是一个匿名的内联......
  • java8
    1.编写一个方法,实现冒泡排序(由小到大),并调用该方法packagetest;publicclassccc1{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubintx[]={1,3,5,6,7,2};paixu(x);for(inti=0;i<x.length;i++){System.out.println(x[i]);}}publicstaticvoi......
  • From Java To Kotlin:空安全、扩展、函数、Lambda很详细,这次终于懂了
    FromJavaToKotlin,空安全、扩展、函数、Lambda概述(Summarize)• Kotlin是什么?• 可以做什么?• Android官方开发语言从Java变为Kotlin,Java有哪些问题?• Kotlin的优点• Kotlin特性(Features)Kotlin是什么?Kotlin出自于捷克一家软件研发公司 JetB......
  • Lambda编程常用技巧
    遍历打印ListList<Integer>list=Arrays.asList(1,5,6,8,9,32,5,8,7,4,5);list.forEach(System.out::println);排序List<Integer>list=Arrays.asList(1,5,6,8,9,32,5,8,7,4,5);list.sort((o1,o2)->o1-o2);过滤List<Integer>list=Ar......
  • Lambda常用表达式
    1. forEachforEach方法是Java 8中新增的一个方法,它能够对集合中的每个元素进行操作。使用Lambda表达式作为参数,可以使代码更加简洁。例如,我们有一个List集合,里面存放了一些字符串:List list =Arrays.asList("apple","banana","orange");使用forEach方法遍历集合,输出每......
  • java8新特性,stream流简单使用
    //新建测试类@Data@NoArgsConstructor@AllArgsConstructor@EqualsAndHashCodepublicclassAuthor{//idprivateLongid;//姓名privateStringname;//年龄privateIntegerage;//简介privateStringintro;//作品privateList<Book>......
  • Java8 Stream --groupingBy 分组讲解
    本文主要讲解:Java8Stream之Collectors.groupingBy()分组示例Collectors.groupingBy()分组之常见用法功能代码:/***使用java8streamgroupingBy操作,按城市分组list*/publicvoidgroupingByCity(){Map<String,List<Employee>>map=employe......
  • C++进阶学习(三)constexpr关键字、值类别与decltype关键字、lambda表达式
    五、constexpr说明符constexpr说明符声明该变量或函数在编译期进行求值,从而适用于需要编译器常量表达式的地方在变量声明constexpr时,对象或非静态成员函数蕴含const,函数或静态成员变量蕴含inlineconstexpr变量必须立刻被初始化constexprinta=5;//a=6;/*error*/......
  • java8 lamda表达式
    list分组1.多字段联合,分组list.stream().collect(Collectors.groupingBy(o->o.getSkuName()+"_"+o.getOeCode(),Collectors.toList()));2.求和计算 Integernum=list.stream().mapToInt(n->n.getNum()).sum();3.分组-排序list.stream().coll......
  • 5月15日c++小语法右值引用,lambda表达式,和多线程
    c++中有一个东西叫做左值引用和右值引用,因为面向对象语言中有很多封装好的自定义类型容器,而这些容器又不像内置类型那样传值方便,有时候可能会有很大的深拷贝浪费于是有了左值引用:在函数传参时方便的传引用避免了传复杂的指针,而在返回之上直接传引用减少了不必要的深拷贝.而右......