Java lambda表达式使用

简介: Java lambda表达式使用

lambda

基本介绍

Lambda 表达式是 JDK1.8 开始之后的新技术,是一种代码的新语法,一种特殊写法,lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于实现由函数式接口定义的唯一抽象方法。

作用:为了简化匿名内部类的代码写法

Lambda 表达式的格式:

 (匿名内部类被重写方法的形参列表) -> {
     //被重写方法的方法体代码
 }

Lambda 表达式并不能简化所有匿名内部类的写法,只能简化函数式接口的匿名内部类

简化条件:首先必须是接口,接口中只能有一个抽象方法

@FunctionalInterface 函数式接口注解:一旦某个接口加上了这个注解,这个接口只能有且仅有一个抽象方法


简化方法

Lambda 表达式的省略写法(进一步在 Lambda 表达式的基础上继续简化)

  • 如果 Lambda 表达式的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号;如果这行代码是 return 语句,必须省略 return 不写
  • 参数类型可以省略不写
  • 如果只有一个参数,参数类型可以省略,同时 () 也可以省略
 List<String> number = new ArrayList<>();
 number.add("a");
 number.add("b");
 number.add("c");
 ​
 number.forEach(new Consumer<String>() {
     @Override
     public void accept(String s) {
         System.out.println(s);
     }
 });
 ​
 number.forEach((String s) -> {
         System.out.println(s);
 });
 ​
 number.forEach((s) -> {
     System.out.println(s);
 });
 ​
 number.forEach(s -> {
     System.out.println(s);
 });
 ​
 number.forEach(s -> System.out.println(s) );

常用简化

Comparator

 public class CollectionsDemo {
     public static void main(String[] args) {
         List<Student> lists = new ArrayList<>()
         Collections.addAll(lists , s1 , s2 , s3);
         Collections.sort(lists, new Comparator<Student>() {
             @Override
             public int compare(Student s1, Student s2) {
                 return s1.getAge() - s2.getAge();
             }
         });
         
         // 简化写法
         Collections.sort(lists ,(Student t1, Student t2) -> {
                 return t1.getAge() - t2.getAge();
         });
         // 参数类型可以省略,最简单的
         Collections.sort(lists ,(t1,t2) -> t1.getAge()-t2.getAge());
     }
 }
目录
相关文章
|
3天前
|
Java 开发者
Java中的Lambda表达式:简化你的代码之旅
【8月更文挑战第17天】 在编程的海洋中,简洁是航行的风帆。Lambda表达式,作为Java 8的一大亮点,为开发者提供了一种更为紧凑、易读的编码方式。本篇文章将带你领略Lambda表达式的魅力,从基础概念到实际应用,让你的代码像诗句一样流畅。
13 4
|
8天前
|
并行计算 Java 程序员
探索Java中的Lambda表达式
在Java 8中,引入了Lambda表达式,这一特性极大地简化了代码,提高了开发效率。本文将通过浅显易懂的语言和生动的比喻,带你一步步了解Lambda表达式的魅力所在,从基础语法到实际应用,让你轻松掌握这一强大的工具。
19 1
|
1天前
|
Java 程序员
"Java程序员必备秘籍:Lambda表达式如何让你的代码瘦身90%?揭秘简化编程的终极奥秘!"
【8月更文挑战第19天】Java持续进化,Lambda表达式自Java 8起赋予其新活力。它简化代码,使编程更愉悦。以前,简单功能需冗长代码,如列表排序要用匿名内部类实现`Comparator`。现在一行Lambda足矣。Lambda如`(参数) -&gt; {表达式}`,支持零或多参数。
|
5天前
|
Oracle Java 关系型数据库
Java10 Lambda 设计和实现问题之在双流 concat 的场景中,确保 s1 和 s2 流水线上的算子与 s3 流水线上的算子正确串联起来,如何实现
Java10 Lambda 设计和实现问题之在双流 concat 的场景中,确保 s1 和 s2 流水线上的算子与 s3 流水线上的算子正确串联起来,如何实现
|
5天前
|
Java API
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
|
5天前
|
Java API
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
|
5天前
|
Java
Java Lambda Stream
Java Lambda Stream
11 0
|
6天前
|
机器学习/深度学习 XML 安全
Java正则表达式基础
Java正则表达式基础
9 0
|
8天前
|
Java API 开发者
震撼!Java 8 中 Lambda 表达式与 Stream API 带来的编程革命超乎想象!
【8月更文挑战第12天】Java 8 引入了 Lambda 表达式和 Stream API,极大地提升了编程效率与代码可读性。Lambda 表达式简化了匿名函数的定义,如快速定义数学运算 `(a, b) -&gt; a + b`。Stream API 提供了一种声明式数据处理方式,能够流畅地完成过滤、映射等操作,减少循环结构的复杂性。两者结合,让 Java 代码更加简洁高效,易于理解和维护。
20 0
|
3月前
|
Java API
Java 8新特性之Lambda表达式与Stream API
【5月更文挑战第17天】本文将介绍Java 8中的两个重要特性:Lambda表达式和Stream API。Lambda表达式是一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁。Stream API是一种用于处理集合的新工具,它提供了一种高效且易于使用的方式来处理数据。通过结合使用这两个特性,我们可以编写出更加简洁、高效的Java代码。
46 0