函数接口在Java 中如何工作?

在本文中,我将使用一个简单的示例来说明函数接口在Java 中的工作方式。

  1. Stream.filter()的简单示例
    通过指定字符串的长度,以下代码可用于过滤字符串列表。
    package com.programcreek.java8.stream;
    import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Stream;
    public class Java8Filter {

    public static void main(String[] args) {
    List list = new ArrayList();
    list.add(“java”);
    list.add(“php”);
    list.add(“python”);
    list.add(“lisp”);
    list.add(“c++”);

     //filter function
     Stream<String> stream = list.stream().filter(p -> p.length() > 3);
     String[] arr = stream.toArray(String[]::new);
    
     System.out.println(Arrays.toString(arr));
    

    }}
    2.什么是功能接口
    功能接口是具有单个抽象方法的接口。Java的API有许多一方法接口,例如Runnable,Callable,Comparator,ActionListener,等。
    让我们看一下Stream的filter()方法的签名:
    Stream filter(Predicate<? super T> predicate);
    根据filter()的方法签名,lambda表达式p -> p.length() > 3应为Predicate的实例。谓词接口具有一种抽象方法:
    boolean test(T t)
    由于Java的面向对象特性,所有内容都应该是一个对象。因此,在后台将lambda表达式转换为功能接口的对象。
    3.功能接口对象的实现
    您可能会对功能接口的对象-谓词-的外观感到好奇。我们可以猜测filter()方法的可能实现:
    Stream filter(Predicate<? super T> predicate){
    for (each string in stream){
    if(predicate.test(string)){
    keep the string
    }else{
    drop the string
    }

    return stream;}
    从给定的lambda表达式转换谓词对象。
    最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值