当前位置:网站首页>了解下常见的函数式接口

了解下常见的函数式接口

2022-06-26 15:57:00 绅士jiejie

Predicate

简介

该函数式接口主要是用于判断操作,内部有一个主要抽象方法以及一些默认方法,如下:
在这里插入图片描述

示例代码

package org.example.basicskills.functionalinterface;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

public class PredicateDemo {
    

    public static List<String> test(List<String> list, Predicate<String> predicate) {
    
        List<String> list2 = new ArrayList<>();
        for (String s : list) {
    
            if (predicate.test(s)) {
    
                list2.add(s);
            }
        }
        return list2;
    }

    //会输出结果2
    public static void main(String[] args) {
    
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        List<String> result = test(list, (s) -> s.equals("2"));
        result.forEach(item -> System.out.println(item));
    }
}

Consumer

简介

该函数式接口主要是用于获取数据的操作,其内部方法定义如下:
在这里插入图片描述

示例代码

package org.example.basicskills.functionalinterface;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class ConsumerDemo {
    

    public static void test(List<String> list, Consumer<String> consumer) {
    
        List<String> list2 = new ArrayList<>();
        for (String s : list) {
    
            consumer.accept(s);
        }
    }

    //数字是1
    //数字是2
    public static void main(String[] args) {
    
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        test(list, (s) -> System.out.println("数字是" + s));
    }
}

Function

简介

该函数式接口主要用于数据类型的转换,方法定义如下:

在这里插入图片描述

示例代码

package org.example.basicskills.functionalinterface;


import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

public class FunctionDemo {
    
    public static List<Integer> test(List<String> list, Function<String, Integer> function) {
    
        List<Integer> list2 = new ArrayList<>();
        for (String s : list) {
    
            Integer result = function.apply(s);
            list2.add(result);
        }
        return list2;
    }

    //true
    //true
    public static void main(String[] args) {
    
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        List<Integer> list2 = test(list, (s) -> Integer.parseInt(s));
        list2.forEach(s -> System.out.println(s instanceof Integer));
    }
}

Supplier

简介

该函数式接口主要是用来值的获取的,但是和Consumer不同的是,Consumer有参数没返回值,Supplier
有返回值没入参,方法定义如下:
在这里插入图片描述

示例代码

package org.example.basicskills.functionalinterface;


import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

public class SupplierDemo {
    

    public static String test(List<String> list, Supplier<String> supplier) {
    
        return supplier.get();
    }

    //返回2
    public static void main(String[] args) {
    
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        String result = test(list, () -> {
    
            return list.get(1);
        });
        System.out.println(result);
    }
}
原网站

版权声明
本文为[绅士jiejie]所创,转载请带上原文链接,感谢
https://genjiejie.blog.csdn.net/article/details/125468826

随机推荐