JAVA学习-行为抽象和Lambda.收集器

       在 Java 中,行为抽象和 Lambda 表达式通常用于函数式编程的范式。Java 8 引入了函数式接口和 Lambda 表达式,使得在处理集合数据时更加灵活和简洁。而收集器(Collector)则是 Java 8 Stream API 提供的一种机制,用于将 Stream 中的元素收集到集合中,或者进行汇总等操作。

一、行为抽象(Functional Interface)

行为抽象是指只包含一个抽象方法的接口。Java 8 引入了 '@FunctionalInterface' 注解,用于标记函数式接口,以便编译器进行检查。行为抽象的出现是为了支持 Lambda 表达式的使用。

特点:

- 只包含一个抽象方法。
- 可以有默认方法和静态方法。
- 可以使用 '@FunctionalInterface' 注解标记。

示例代码:

@FunctionalInterface
interface MyFunctionalInterface {
    void myMethod();
}

二、Lambda 表达式

Lambda 表达式是一种匿名函数,可以直接传递给方法或者保存在变量中。Lambda 表达式通常用于替代匿名内部类的写法,使代码更加简洁。

特点:

- 简洁:可以用更少的代码实现功能。
- 支持闭包:可以访问外部作用域的变量。
- 函数式编程:支持函数式编程的范式,如在集合操作中使用 Stream API。

示例代码:

MyFunctionalInterface myLambda = () -> System.out.println("Hello, Lambda!");
myLambda.myMethod();

三、收集器(Collector)

收集器是 Stream API 中用于将元素收集到集合中或进行汇总操作的工具。它提供了一系列静态方法来创建不同类型的收集器,也可以通过 'Collectors' 类的静态方法获取常用的收集器实例。

特点:

- 支持串行和并行操作。
- 提供了丰富的方法进行元素的收集和汇总。
- 可以自定义收集器来满足特定需求。

常见的收集器方法:

- 'toList()':将 Stream 中的元素收集到 List 中。
- 'toSet()':将 Stream 中的元素收集到 Set 中。
- 'toMap()':将 Stream 中的元素根据指定的键值映射函数收集到 Map 中。
- 'joining()':将 Stream 中的元素拼接成一个字符串。

示例代码:

List<String> list = Arrays.asList("apple", "banana", "cherry");
String result = list.stream().collect(Collectors.joining(", "));
System.out.println(result); // 输出:apple, banana, cherry

       行为抽象和 Lambda 表达式通常与收集器一起使用,以实现复杂的数据处理逻辑,例如在集合操作中筛选、映射、过滤等。这些功能的结合使得 Java 8 引入了更加强大和灵活的集合操作机制。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值