四大核心函数式接口

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

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);


目录
相关文章
|
6月前
|
安全 Java 数据安全/隐私保护
|
1月前
|
Java
颠覆认知:一向主张可扩展性的Java,为何要推出封闭类?
本文介绍了Java的Sealed Classes(封闭类)功能,探讨了为何Java在强调可扩展性的同时引入这一特性。文章基于JDK 17.0.5,详细解释了Sealed Classes的概念及其作用。通过对比final类和package-private类,阐述了封闭类在提高安全性和控制扩展性方面的优势。最后,通过具体示例展示了如何使用sealed关键字以及相关语法。了解这一新特性有助于我们更好地把握Java未来的发展趋势。
43 2
|
2月前
|
存储 安全 编译器
【C++核心】一文理解C++面向对象(超级详细!)
这篇文章详细讲解了C++面向对象的核心概念,包括类和对象、封装、继承、多态等。
25 2
|
3月前
|
Java
JUC(7)四大函数式接口
这篇文章详细介绍了Java中的四大函数式接口:Function(函数型接口)、Predicate(断定型接口)、Consumer(消费型接口)和Supplier(供给型接口),它们是Java 8引入的lambda表达式和函数式编程的核心组成部分。
JUC(7)四大函数式接口
|
5月前
|
Java 数据安全/隐私保护
Java 封装:打破传统,创新你的编程思维!
【6月更文挑战第16天】Java中的封装是将数据和操作数据的方法封装在类中,隐藏内部细节,通过公共接口交互。这样保证了数据安全,降低了耦合度,便于验证(如`Shape`类中构造函数的类型检查)和控制(如`setType`方法中添加额外操作)。封装使代码更清晰、可维护,鼓励创新编程思维。
44 11
|
5月前
|
Java
Java 继承深度剖析:子类与父类之间的“血缘”关系,如何传承与革新?
【6月更文挑战第16天】Java 继承体现类之间的&quot;血缘&quot;关系,子类继承父类的属性和方法,如`Student`继承`Person`。子类可扩展或覆盖父类功能,如`Student`的`introduce()`,展示代码复用和定制。同样,`Shape`的子类`Circle`和`Square`继承并定制`draw()`方法,形成多样的类结构,适应不同场景,增强代码组织和效率。
58 4
|
4月前
|
设计模式 Java 开发者
工厂设计模式的实现与应用场景分析
工厂设计模式的实现与应用场景分析
每日一道面试题之软件体系结构的核心要素有哪些?各起什么作用?
每日一道面试题之软件体系结构的核心要素有哪些?各起什么作用?
|
Java 关系型数据库
java面向对象设计的五大原则
java面向对象设计的五大原则
用好JAVA中的函数式接口,轻松从通用代码框架中剥离业务定制逻辑
今天我们一起聊一聊JAVA中的函数式接口。那我们首先要知道啥是函数式接口、它和JAVA中普通的接口有啥区别?其实函数式接口也是一个Interface类,是一种比较特殊的接口类,这个接口类有且仅有一个抽象方法(但是可以有其余的方法,比如default方法)。