欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

总结:java8.的lambda表达式

程序员文章站 2022-05-11 13:46:49
...

概念

百度百科解释:
Lambda表示(Lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

特点

两个特点:
(1)Lambda是匿名函数(假设使用场景,想写一个函数实现,但是又无法准确的定义这个函数名的时候,说白了就是不想费神,费事)很大程度的减少代码冗余,简化开发。
(2)Lambda是可传递的(即可以将整个Lambda表达式作为参数传给其他函数)

语法

核心操作符号->,该操作符一般被称为“Lambda操作符或者箭头操作符”,它将表达式分为左右两部分。
左边部分表示:规定表达式所需的所有参数。
右边部分表示:可以理解为函数主要函数体,即这个表达式要主要实现的功能。也叫Lambda体。
格式范例

(1)无参无返回值:

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

(2)有一个参数的:

Consumer<String> con = (x) -> System.out.println(x);

(3)只有一个参数时,包括参数的括号可以省略:

Consumer<String> con = x -> System.out.println(x);

(4)需要两个参数,并且有返回值

Comparator<Integer> com = (x, y) -> {
        System.out.println("xxxxx");
        return Integer.compare(x, y);
    };

(5)当Lambda体只有一条语句时,return关键字和大括号可以省略

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

范例

实现一个线程的区别?

public class Test {
 
    public static void main(String[] args) {
 
        // Java8之前:
        new Thread(new Runnable() {
            public void run() {
                System.out.println("hello world");
            }
        }).start();
 
        // Java8方式:
        new Thread(() -> System.out.println("hello world")).start();
    }
}

集合元素的遍历:

public class Test2 {
 
    public static void main(String[] args) {
        // Java8之前:
        List<String> list1 = Arrays.asList("a", "b", "c", "d");
        for (String str : list1) {
            System.out.println(str);
        }
 
        // Java 8之后:
        List list2 = Arrays.asList("a", "b", "c", "d");
        list2.forEach(n -> System.out.println(n));
 
        // 使用Java 8的方法引用更方便,方法引用由::双冒号操作符标示,
        list2.forEach(System.out::println);
 
    }
}

[……学习中……]

相关标签: 学习总结