Java-Lambda

1 Lambda表达式

  • lambda表达式可以理解为对匿名内部类的一种简化 , 但是本质是有区别的

  • 面向对象思想 :

    • 强调的是用对象去完成某些功能

  • 函数式编程思想 :

    • 强调的是结果 , 而不是怎么去做

1 函数式接口

  • 只有一个抽象方法需要重写的接口,函数式接口。函数式接口是允许有其他的非抽象方法的存在例如静态方法,默认方法,私有方法。

  • 为了标识接口是一个函数式接口,可以在接口之上加上一个注解: @FunctionalInterface 以示区别

  • 在JDK中 java.util.function 包中的所有接口都是函数式接口。我们之前学习线程时学习的Runnable也是函数式接口

2 Lambda表达式的使用

  • 使用前提

    • 必须存在一个接口

    • 接口中有且只有一个抽象方法

  • 格式 : ( 形式参数 ) -> { 代码块 }

    • 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可

    • ->:由英文中画线和大于符号组成,固定写法。代表指向动作

    • 代码块:是我们具体要做的事情,也就是以前我们写的方法体内容

2-举例

1. 使用 Lambda 表达式实现一个简单的函数式接口

假设有一个函数式接口 GreetingService,它只包含一个抽象方法 sayMessage

@FunctionalInterface
interface GreetingService {
    void sayMessage(String message);
}

使用 Lambda 表达式来实例化该接口: 

public class LambdaExample {
    public static void main(String[] args) {
        // 使用 Lambda 表达式实现 GreetingService 接口
        GreetingService greetService = message -> System.out.println("Hello " + message);
        
        // 调用函数式接口的方法
        greetService.sayMessage("World");
    }
}

2. 使用 Lambda 表达式对集合进行迭代操作

假设有一个字符串列表,我们想要打印出列表中每个字符串的内容:

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

        // 使用 Lambda 表达式对集合进行迭代
        names.forEach(name -> System.out.println("Hello, " + name));
    }
}

 

3. 使用 Lambda 表达式实现多线程

通过 Lambda 表达式可以简化线程的创建和管理:

public class LambdaExample {
    public static void main(String[] args) {
        // 使用 Lambda 表达式创建一个新线程
        new Thread(() -> System.out.println("Hello from thread!")).start();
    }
}

4. 使用 Lambda 表达式进行条件过滤

假设有一个整数列表,我们想要筛选出所有的偶数:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class LambdaExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 使用 Lambda 表达式进行条件过滤
        List<Integer> evenNumbers = numbers.stream()
                                           .filter(n -> n % 2 == 0)
                                           .collect(Collectors.toList());

        System.out.println("Even numbers: " + evenNumbers);
    }
}

 Lambda 表达式通过简洁的语法和函数式接口的支持,使得 Java 编程在处理集合操作、事件处理等方面变得更加灵活和高效。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值