四大内置核心函数式接口

四大内置核心函数式接口

四大内置核心函数式接口

1.Cosumer<T>消费型接口

void accept(T t);

/**
 * @Author: 郜宇博
 * @Date: 2021/8/31 21:34
 * 四大核心内置接口
 */
public class BuiltInInterface {

    /**
     * 消费型接口
     * @param money
     * @param consumer
     */
    public void happy(int money, Consumer<Integer> consumer){
        consumer.accept(money);
    }
    @Test
    public void test(){
        happy(100,(Integer money)->{
            System.out.println("消费了"+money+"元");
        });
    }
    
}

2.Supploer< T> 供给型接口

T get();

@Test
public void test(){
    //每次调用供给型接口生产随机数,存储在arrayList中
    ArrayList<Integer> arrayList = product(10, ()-> new Random().nextInt(100));
    //遍历
    Iterator<Integer> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }

}
public ArrayList<Integer> product(int count, Supplier<Integer> supplier){
    ArrayList<Integer> list = new ArrayList<>();
    //生产count次
    for (int i = 0; i < count; i++) {
        Integer num = supplier.get();
        list.add(num);
    }
    return list;
}

3.Function< T> 函数型接口

R apply(T t);

//函数式接口测试
@Test
public void test3(){
    final String oldStr = "\t\t\t你好";
    String strHandler = strHandler(oldStr,(str)->str.trim());
    System.out.println(oldStr);
    System.out.println(strHandler);
}

public String strHandler(String str, Function<String,String> function){
    String strHandler = function.apply(str);
    return strHandler;
}

4.Predicate< T>断言式接口

boolean test(T t);

@Test
public void test4(){
    List<String> list = Arrays.asList("abcd","abd","eww","dsadasdas","12");
    //接口实现为字符串长度大于3
    List<String> newList = strFilter(list,(str)->str.length()>3);
    System.out.println(newList);
}

//断言式接口
public List<String> strFilter(List<String> list, Predicate<String > predicate){
    List<String> newStrings = new ArrayList<>();
    for(String str: list){
        //满足断言条件的加入到新的集合中
        if (predicate.test(str)){
            newStrings.add(str);
        }
    }
    return newStrings;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115173.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android之ListView原理学习与优化总结

    Android之ListView原理学习与优化总结

    2021年9月8日
    53
  • Linux的vi命令用法大全_linux top命令详解

    Linux的vi命令用法大全_linux top命令详解vi共分为三种模式:分别是一般模式,编辑模式与命令行模式一般模式:以vi打开一个文件就直接了一般模式(这是默认的模式)编辑模式:在指令模式下输入的按键“i,I,o,O,a,A,r,R”,vi即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入…

    2022年9月22日
    0
  • 几种更新(Update语句)查询的方法

    几种更新(Update语句)查询的方法

    2021年12月4日
    44
  • 网络爬虫必备知识之concurrent.futures库

    1.concurrent.futures库简介python标准库为我们提供了threading和mutiprocessing模块实现异步多线程/多进程功能。从python3.2版本开始,标准库又为

    2021年12月29日
    47
  • 如何用手机号申请163邮箱_163邮箱注册手机号注册

    如何用手机号申请163邮箱_163邮箱注册手机号注册如果你还没有邮箱,直接用手机号注册163邮箱,163.net是一款TOM的VIP邮箱,跟普通邮箱的区别是邮箱容量可以无限放大,来往的邮件信息能长期存储,国际邮件能快速收到和发出。怎么申请邮箱?163邮箱申请的好处用手机浏览器输入图片中的网址,进入邮箱官网在这里跟普通邮箱的区别是VIP邮箱有多个后缀选择,不像qq只能有一个。点击注册,接下来选择套餐,根据邮箱名字的位数、容量空间、大附件、群发数量,还有安全防护级别、误发邮件撤回次数、删除的邮件回复次数来选择套餐,不过不用担心,如果你现在已经有邮箱了

    2022年9月17日
    0
  • vue解决跨域的几种办法_前端跨域解决方案

    vue解决跨域的几种办法_前端跨域解决方案什么是跨域  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。这里列举一个经典的列子:#协议跨域http://a.baidu.com访问https://a.baidu.com;#端口跨域http://a.baidu.com:8080访问http://a.baidu.com:80;#域名跨域http://a.baidu.com访问http://b.baidu.com;  现在很多公司都是采用前后分离的方式开发。那么出

    2022年10月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号