java add方法_函数接口在Java 中如何工作?

f19f9fe87fc19744dafc6ae8ab82f188.png

在本文中,我将使用一个简单的示例来说明函数接口在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<String> list = new ArrayList<String>();

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<T> filter(Predicate<? super T> predicate);

根据filter()的方法签名,lambda表达式p -> p.length() > 3应为Predicate的实例。谓词接口具有一种抽象方法:

boolean test(T t)

由于Java的面向对象特性,所有内容都应该是一个对象。因此,在后台将lambda表达式转换为功能接口的对象。

3.功能接口对象的实现

您可能会对功能接口的对象-谓词-的外观感到好奇。我们可以猜测filter()方法的可能实现:

Stream<T> 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的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。

b8692ad5ab4a99c08336df102d861f35.png

abd8d01f79471d91dd9bbfe1e69199e5.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值