函数式接口与Stream流学习--Arsu

本文详细探讨了Java中的函数式接口,包括Supplier、Consumer、Predicate和Function接口的使用及其默认方法,并通过实例介绍了如何使用Lambda表达式进行性能优化。同时,文章深入讲解了Stream流的创建、常用操作如forEach、filter、map、count等,并通过方法引用来简化代码。通过对比传统方式和Stream流方式处理集合元素,展示了Stream流的优势。
摘要由CSDN通过智能技术生成

函数式接口与Stream流

1.函数式接口概念与定义

在这里插入图片描述
在这里插入图片描述
ps(
在这里插入图片描述

2.1性能浪费日志案例

在这里插入图片描述
根据上面代码发现性能浪费问题
在这里插入图片描述

2.2使用Lambda优化日志案例

定义一个日志信息的函数式接口
在这里插入图片描述

测试
在这里插入图片描述
在这里插入图片描述
综上可得结论
在这里插入图片描述

3.1.1常用函数式接口----Supplier接口

在这里插入图片描述
在这里插入图片描述

3.1.2常用函数式接口----Supplier接口(练习)

题目
在这里插入图片描述
代码
在这里插入图片描述在这里插入图片描述
打印结果截图
在这里插入图片描述

3.2.1常用函数式接口----Consumer接口

在这里插入图片描述
在这里插入图片描述

3.2.2常用函数式接口----Consumer接口默认方法andThen

在这里插入图片描述
代码

package learn.functionInterface.demo2;

import java.util.function.Consumer;

/**
 * @ClassName ConsumerAndThenDemo
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/10 18:46
 * @Version 1.0
 **/
public class ConsumerAndThenDemo {
   
    public static void method(String s, Consumer<String> con1, Consumer<String> con2) {
   
       /*1. con1.accept(s);
        con2.accept(s);*/
        //2. con1.andThen(con2)等价于步骤1.,con1和con2谁写前面就先消费谁
        con1.andThen(con2).accept(s);
    }

    public static void main(String[] args) {
   
        method("hello",
                (str) -> {
   
                    System.out.println(str.toUpperCase());

                },
                (str) -> {
   
                    System.out.println(str.toLowerCase());
                });
    }
}

打印结果截图
在这里插入图片描述

3.2.3常用函数式接口----Consumer接口(练习)

题目:格式化打印信息
在这里插入图片描述
在这里插入图片描述

代码

package learn.functionInterface.demo2;

import java.util.function.Consumer;

/**
 * @ClassName ConsumerDemo3
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/10 19:00
 * @Version 1.0
 **/
public class ConsumerDemo3 {
   
    public static void formatNameAge(String[] arr, Consumer<String> con1, Consumer<String> con2) {
   
        for (String str : arr) {
   
            con1.andThen(con2).accept(str);
        }
    }

    public static void main(String[] args) {
   
        String[] arr = {
   "迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男"};
        formatNameAge(arr,
                (message) -> {
   
                    String name = message.split(",")[0];
                    System.out.print("姓名:" + name + "。");
                },
                (message) -> {
   
                    String age = message
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值