Java 中常用内置接口函数

        在 Java 8 及以后的版本中,引入了许多函数式编程的特性,其中最重要的就是内置的函数式接口。这些接口使得编写更简洁、可读性更强的代码成为可能。今天我将介绍四个常用的内置接口:PredicateFunctionConsumer 和 Supplier,并提供示例代码以帮助理解其用法。

1. Supplier 接口

  Supplier<T> 是一个供给型接口,它没有输入参数,但会返回一个类型为 T 的对象。常用于需要延迟计算或生成对象的场景。

源码

示例

package com.school;

import java.util.Arrays;
import java.util.function.Supplier;

/**
 * 文件名: null.java
 * 作者: 20526
 * 创建时间: 2024/9/8 14:08
 * 描述:Supplier接口
 */
public class SupplierDemo {

    public static void main(String[] args) {
        testSupplier(()->{
            int[] arr = {1, 2, 20, 4, 9};
            Arrays.sort(arr);
            return arr[arr.length - 1];
        });

    }

    /**
     * 供给型接口Supplier<T>的使用
     * 传入一个泛型参数T,返回类型为T的对象
     */
    public static void testSupplier(Supplier<Integer> supplier) {
        int max = supplier.get();

        System.out.println("最大值: " + max);

    }
}

2. Consumer 接口

  Consumer<T> 是一个消费型接口,它接受一个类型为 T 的输入参数,但没有返回值。常用于执行某些操作,例如打印或处理数据。

源码

示例

package com.school;

import java.util.function.Consumer;

/**
 * 文件名: null.java
 * 作者: 20526
 * 创建时间: 2024/9/8 14:14
 * 描述:Consumer接口
 */
public class ConsumerDemo {
    public static void main(String[] args) {

        //Lambda表达式作省略写法
        testconsume( s-> System.out.println(s.toUpperCase()));

        // 使用匿名内部类实现Consumer接口
        testconsume(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s.toUpperCase());
            }
        });
    }

    /**
     * 消费型接口Consumer
     * 传入一个泛型T,没有返回值,用于消费数据
     */

    public static void testconsume(Consumer<String> consumer) {
        System.out.println("a a a");
        consumer.accept("Hello World");
    }
}

3. Function 接口

  Function<T, R> 是一个函数型接口,它接受一个类型为 T 的输入参数,并返回一个类型为 R 的结果。常用于转换数据类型或执行某些计算。

源码

示例

package com.school;

import java.util.function.Function;

/**
 * 文件名: null.java
 * 作者: 20526
 * 创建时间: 2024/9/8 14:30
 * 描述:Function接口
 */
public class FunctionDemo {

    public static void main(String[] args) {
          getNumber( s -> Integer.parseInt(s));
    }

    public static void getNumber(Function<String, Integer> function) {
        Integer i = function.apply("123");
        System.out.println("i = "+i);
    }

}

4. Predicate 接口

  Predicate<T> 是一个断言型接口,它接受一个类型为 T 的输入参数,并返回一个布尔值。常用于过滤或测试条件。

源码

示例

package com.school;

import java.util.function.Predicate;

/**
 * 文件名: PredicateDemo.java
 * 作者: 20526
 * 创建时间: 2024/9/8 14:45
 * 描述: Predicate接口
 */
public class PredicateDemo {
    public static void main(String[] args) {
        testPredicate(s -> s.length() > 5);
    }

    public static void testPredicate(Predicate<String> predicate) {
        String testString = "HelloWorld";
        boolean result = predicate.test(testString);
        System.out.println("字符串长度大于5: " + result);
    }
}

总结

        Java 的内置函数式接口提供了强大的功能,使得开发者能够以更简洁的方式编写代码。通过 SupplierConsumerFunction 和 Predicate,我们可以轻松地实现延迟计算、数据处理、类型转换和条件判断。这些接口在 Java 8 的流式 API 中得到了广泛应用,极大地提升了代码的可读性和可维护性。希望对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值