四大核心函数式接口

简介: 四大核心函数式接口

1、jdk1.8的四大核心函数式接口

函数式接口 参数类型 返回值类型 描述
Consumer T 处理一个接受T类型的值
Function T R 处理T类型的值,并返回R类型的值
Supplier T 接受一个T类型的值
Predicate T boolean 处理T类型的值,返回true或者false

2、基本使用:

2.1、Consumer<T>接口,消费者接口

比如我们可以用来遍历:

创建一个实体类对象:

class Person {
    private int age;
    private String name;
  // 构造 get,set,toString
}

进行遍历(比如遍历年龄)

List<Person> list = new ArrayList<>();
        list.add(new Person(12, "fenfen"));
        list.add(new Person(11, "孙行者"));
        list.add(new Person(14, "猪八戒"));
        list.add(new Person(15, "张无忌"));
list.foreach(a->System.out.println(a.getAge))

2.2、Function<T,R>接口,表示接受一个参数并产生结果的函数

比如我们实现一个字符串转大写的例子

public static String toUppString(String str,Function<String,String> fun){
    return fun.apply(str);
}
// 进行调用
String str = toUppString("wesdfsdAAA",String::toUpperCase);
System.out.println(str);

2.3、Supplier<T>接口,供应商

比如我们需要返回10个随机数

public static List<Integer> getNums(int num, Supplier<Integer> s) {
        List<Integer> integers = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            integers.add(s.get());
        }
        return integers;
    }
// 调用
   List<Integer> nums = getNums(10, () -> new Random().nextInt(100));
     nums.forEach(System.out::println);

2.4、Predicate<T>接口,断言接口

返回集合中包含字符串的所有项组成的新集合

public static List<String> filter(List<String> list, Predicate<String> p) {
        List<String> list1 = new ArrayList<>();
        for (String s : list) {
            if (p.test(s)) {
                list1.add(s);
            }
        }
        return list1;
    }
// 调用
        List<String> list = new ArrayList<>();
        list.add("avc");
        list.add("agb");
        list.add("arb");
        list.add("avc");
        List<String> avc = filter(list, (a) -> a.contains("avc"));
        avc.forEach(System.out::println);


目录
相关文章
|
监控 Java Linux
JVM调优
JVM调优
976 0
|
Java 数据库 Spring
Spring事务的传播机制(行为、特性)
Spring事务的传播机制(行为、特性)
831 0
【Stata】append和merge的区别
【Stata】append和merge的区别
1712 0
启动报错:java.nio.charset.MalformedInputException: Input length = 1
启动报错:java.nio.charset.MalformedInputException: Input length = 1
1519 0
|
11月前
|
前端开发 开发工具 iOS开发
原创Electron38.2+Vite7+Vue3+Pinia3+ArcoDesign客户端os管理系统模板
2025最新版原创研发Electron38.2+Vite7+Vue3 setup+ArcoDesign+Echarts仿MacOS/Wins风格桌面客户端OS系统解决方案。
571 10
JUC(7)四大函数式接口
这篇文章详细介绍了Java中的四大函数式接口:Function(函数型接口)、Predicate(断定型接口)、Consumer(消费型接口)和Supplier(供给型接口),它们是Java 8引入的lambda表达式和函数式编程的核心组成部分。
JUC(7)四大函数式接口
|
前端开发 NoSQL Redis
如何实现大文件上传:秒传、断点续传、分片上传
如何实现大文件上传:秒传、断点续传、分片上传
1527 0
|
Java 数据库连接 Maven
最新版 | SpringBoot3如何自定义starter(面试常考)
在Spring Boot中,starter是一种特殊的依赖,帮助开发人员快速引入和配置特定功能模块。自定义starter可以封装一组特定功能的依赖和配置,简化项目中的功能引入。其主要优点包括模块化、简化配置、提高代码复用性和实现特定功能。常见的应用场景有短信发送模块、AOP日志切面、分布式ID生成等。通过创建autoconfigure和starter两个Maven工程,并编写自动配置类及必要的配置文件,可以实现一个自定义starter。最后在测试项目中验证其有效性。这种方式使开发者能够更便捷地管理和维护代码,提升开发效率。
2326 1
最新版 | SpringBoot3如何自定义starter(面试常考)
|
监控 安全 机器人
电话客服热线系统的详细搭建方案(十大关键要素)
构建高效电话客服系统涉及需求分析、话务量估算、系统规划与设计、多渠道集成、智能化升级和安全措施。需求分析包括客户调查、数据分析、竞争分析和焦点小组讨论,以确定服务模型和规模。系统设计需选择合适的服务模型、技术工具,并设计呼叫流程。多渠道接入与在线客服可提升客户体验,智能化技术如智能语音和文字机器人则提高效率。技术实施涉及硬件和软件选择、系统集成、测试与调整。安全方面,要设计安全策略,实施安全技术,并持续监控。人员培训与管理确保团队能力,运营和优化则关注日常管理、系统优化和后期运维。部署方式包括云端和本地化,租用和自建,各有优劣。电话客服系统对提升客户满意度和企业形象至关重要。
2461 152
|
开发框架 Java 开发者
Spring Boot中的自动装配原理
Spring Boot中的自动装配原理
3939 1