美文网首页
lambda表达式,函数式接口,stream接口

lambda表达式,函数式接口,stream接口

作者: 前度天下 | 来源:发表于2021-05-07 10:32 被阅读0次

lambda表达式

Lambda表达式是 简洁的表示可传递的匿名函数的一种方式。它没有名称,但它有参数列表,函数主体,返回类型,可能还有一个可以抛出的异常列表。

语法规则

引入了一个新的操作符“->”,该操作符在很多资料中,称为箭头操作符,或者lambda操作符;
左侧:lambda表达式的参数列表
右侧:lambda表达式中所需要执行的功能,即lambda函数体

  • 无参数,无返回值的用法 :() -> System.out.println("hello lambda");
    @Test
    public void test1() {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("hello runnable");
            }
        };
        r.run();
        Runnable r1 = () -> System.out.println("hello lambda");
        r1.run();
    }

  • 有一个参数,无返回值的用法: (x) -> System.out.println(x); 或者 x -> System.out.println(x); 一个参数,可以省略参数的小括号
    @Test
    public void test2(){
        Consumer<String> con = (x) -> System.out.println(x);
        con.accept("有一个参数,无返回值的用法(Consumer函数式接口)");
    }
  • 有两个参数,有返回值的:(x, y) -> x + y

    public void test3() {
        BinaryOperator<Integer> binary = (x, y) -> x + y;
        System.out.println(binary.apply(1, 2));// 3
    }
  • lambda表达式中,多行语句,分别在无返回值和有返回值的抽象类中的用法
    @Test
    public void test4() {
        // 无返回值lambda函数体中用法
        Runnable r1 = () -> {
            System.out.println("hello lambda1");
            System.out.println("hello lambda2");
            System.out.println("hello lambda3");
        };
        r1.run();
 
        // 有返回值lambda函数体中用法
        BinaryOperator<Integer> binary = (x, y) -> {
            int a = x * 2;
            int b = y + 2;
            return a + b;
        };
        System.out.println(binary.apply(1, 2));// 6
 
    }

lambda的类型推断:在lambda中的参数列表,可以不用写参数的类型,跟java7中 new ArrayList<>(); 不需要指定泛型类型,这样的<>棱形操作符一样,根据上下文做类型的推断。

函数式接口

接口中只有一个抽象方法的接口,称为函数式接口;可以使用@FunctionalInterface注解修饰,对该接口做检查;如果接口里,有多个抽象方法,使用该注解,会有语法错误。

stream接口

相关文章

  • Java 8 学习笔记

    1. Java 8 1.1 生态 Lambda 表达式函数式接口方法引用 / 构造器引用Stream API接口中...

  • java8新特性

    一、总结 二、Lambda表达式 三、函数式接口 四、方法引用 五、Stream API 5.1 stream的创...

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • JDK1.8新增特性参考

    Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式...

  • Java Stream API初探

    Stream [toc] 0. 前置知识点 函数式接口 lambda表达式和方法引用传递 1. 概述 Stream...

  • JAVA8新特性简介

    新特性 1、Lambda表达式 2、函数式接口 3、方法引用与构造器引用 4、Stream API 5、接口中的默...

  • 0.Java8 简介

    1. lambda 表达式 2. 函数式接口 3. 方法引用于构造器引用 4. Stream API 5. 接口中...

  • JDK1.8 新特性

    JDK1.8 新特性 Lambda表达式函数式接口*方法引用和构造器调用Stream API接口中的默认方法和静态...

  • JDK8新特性 内置函数式接口

    1. 内置函数式接口由来 lambda表达式的前提是需要有函数式接口。而且lambda表达式使用时不关心接口名,抽...

  • Java8实战之-Lambda

    应该在什么地方使用Lambda表达式 你可以在函数式的接口上使用Lambda表达式。什么是函数式接口?接口只定义了...

网友评论

      本文标题:lambda表达式,函数式接口,stream接口

      本文链接:https://www.haomeiwen.com/subject/hxjsdltx.html