Lambda-常用函数式接口

一、常用函数式接口

JDK 提供了大量常用的函数式接口以丰富 Lambda 的典型使用场景,它们主要在 java.util.function 包中被提供。
下面是最简单的几个接口及使用示例。

#1.Supplier接口

java.util.function.Supplier<T> 接口仅包含一个无参的方法: T get() 。用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口,这也就意味着对应的Lambda 表达式需要 对外提供 一个符合泛型类型的对象数据。
 
import java.util.function.Supplier;
public class Demo08Supplier {
    private static String getString(Supplier<String> function) {
        return function.get();
    }
    public static void main(String[] args) {
        String msgA = "Hello"; 
        String msgB = "World";
        System.out.println(getString(() ‐> msgA + msgB));
    } 
}

#1.2 练习:求数组元素最大值

使用 Supplier 接口作为方法参数类型,通过 Lambda 表达式求出 int 数组中的最大值。提示:接口的泛型请使用 java.lang.Integer 类。
public class Demo02Test { 
//定一个方法,方法的参数传递Supplier,泛型使用Integer 
    public static int getMax(Supplier<Integer> sup){
        return sup.get(); 
    }
    public static void main(String[] args) {
        int arr[] = {2,3,4,52,333,23}; 
        //调用getMax方法,参数传递Lambda
        int maxNum = getMax(()‐>{ 
            //计算数组的最大值 
            int max = arr[0];
            for(int i : arr){
                if(i>max){
                    max = i;
                } 
            }
            return max;
        });
        System.out.println(maxNum);
    } 
}

#2.Consumer接口

java.util.function.Consumer<T> 接口则正好与 Supplier 接口相反,它不是生产一个数据,而是 消费 一个数据,其数据类型由泛型决定。
疑问:什么是消费呢?
 
发布了149 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u011442726/article/details/104992203