java-函数式编程-jdk
背景
- 函数式接口很简单,但是不是每一个函数式接口都需要我们自己来写
- jdk 根据
有无参数,有无返回值,参数的个数和类型,返回值的类型提前定义了一些通用的函数式接口
IntPredicate
- 参数:有一个,类型是int类型
- 返回值:返回值是boolean类型 所以是Predicate
IntPredicate type1_1 = (int a) -> (a & 1) == 0;@FunctionalInterface
interface MyInterface1{boolean op(int arg1);
}
IntBinaryOperator
- 参数:两个int 所以是Binary
- 返回值:和参数一样是int 所以是Operator
IntBinaryOperator type4_1 = (int a, int b) -> a + b;
IntBinaryOperator type5_1 = (int a, int b) -> a * b;@FunctionalInterface
interface MyInterface3{int op(int num1, int num2);
}
Supplier
- 参数:无
- 返回值:没有参数但是有返回值,所以是Supplier
Supplier<Student> type6_2 = () -> new Student("张三", 18);Supplier<List<Student>> type7_2 = () -> {List<Student> list = new ArrayList<>();list.add(new Student("张三", 18));list.add(new Student("李四", 19));return list;};// MyInterface5和MyInterface4是可以使用泛型合并的
@FunctionalInterface
interface MyInterface5_1<T>{T op() ;
}
Function
- 有参数,也有返回值
- 但是参数类型和返回值类型不一样,所以是Function
Function<Student,String> type8_2 = (Student student) -> student.getName();
Function<Student,Integer> type9_2 = (Student student) -> student.getage();//MyInterface6和MyInterface7是可以使用泛型合并的
// O是返回值类型,I是入参类型
@FunctionalInterface
interface MyInterface8<I,O>{O op(I inObj) ;
}
常见的函数式接口

命名规则

练习
- 获取list中的偶数数据
- 返回的是Boolean类型的结果,使用进行Predicate接口接受
public static void main(String[] args) {List<Integer> list = new ArrayList<>();for (int i = 0; i < 10; i++) {list.add(i);}// 获取偶数List<Integer> evenNumbers = filter(list, i -> i % 2 == 0);System.out.println(evenNumbers);}// 传递两个参数:一个列表和一个 Predicate 接口,对列表进行过滤static List<Integer> filter(List<Integer> list, Predicate<Integer> predicate) {List<Integer> result = new ArrayList<>();for (Integer i : list) {// 使用 Predicate 的 test() 方法判断元素是否满足条件 if (predicate.test(i)) {result.add(i);}}return result;}
相关文章:
java-函数式编程-jdk
背景 函数式接口很简单,但是不是每一个函数式接口都需要我们自己来写jdk 根据 有无参数,有无返回值,参数的个数和类型,返回值的类型 提前定义了一些通用的函数式接口 IntPredicate 参数:有一个,类型是int类…...
qiankun实现微前端,vue3为主应用,分别引入vue2和vue3微应用
1、vue3主应用配置 1、安装 qiankun yarn add qiankun # 或者 npm i qiankun -S2、在主应用中注册微应用 import { registerMicroApps, start } from "qiankun" const apps [{ name: vue2App, // 应用名称 xs_yiqing_vue2entry: //localhost:8080, // vue 应用…...
写了 1000 条 Prompt 之后,我总结出了这 9 个框架【建议收藏】
如果你对于写 Prompt 有点无从下手,那么,本文将为你带来 9 个快速编写 Prompt 的框架,你可以根据自己的需求,选择任意一个框架,填入指定的内容,即可以得到一段高效的 Prompt,让 LLM 给你准确满意…...
事件代理 浅谈
事件代理是一种将事件处理委托给父元素或祖先元素来管理的技术。当子元素触发特定事件时,该事件不会直接在子元素上进行处理,而是会冒泡到父元素或祖先元素,并在那里进行处理。这样做的好处是可以减少事件处理函数的数量,提高性能…...
一对多在线教育系统,疫情后,在线教育有哪些变革?
疫情期间,全面开展的在线教育经历了从不适应到认可投入并常态化的发展过程。如何发挥在线教学优势,深度融合线上与线下教育,将在线教育作为育人方式变革动力,提升育人服务水平,是复学复课后学校教育教学面临的关键问题…...
RabbitMQ(安装配置以及与SpringBoot整合)
文章目录 1.基本介绍2.Linux下安装配置RabbitMQ1.安装erlang环境1.将文件上传到/opt目录下2.进入/opt目录下,然后安装 2.安装RabbitMQ1.进入/opt目录,安装所需依赖2.安装MQ 3.基本配置1.启动MQ2.查看MQ状态3.安装web管理插件4.安装web管理插件超时的解决…...
JUC下的BlockingQueue详解
BlockingQueue是Java并发包(java.util.concurrent)中提供的一个接口,它扩展了Queue接口,增加了阻塞功能。这意味着当队列满时尝试入队操作,或者队列空时尝试出队操作,线程会进入等待状态,直到队列状态允许操作继续。这…...
ChatGPT理论分析
ChatGPT "ChatGPT"是一个基于GPT(Generative Pre-trained Transformer)架构的对话系统。GPT 是一个由OpenAI 开发的自然语言处理(NLP)模型,它使用深度学习来生成文本。以下是对ChatGPT进行理论分析的几个主…...
算法提高之魔板
算法提高之魔板 核心思想:最短路模型 将所有状态存入队列 更新步数 同时记录前驱状态 #include <iostream>#include <cstring>#include <algorithm>#include <unordered_map>#include <queue>using namespace std;string start&qu…...
服务器内存占用不足会怎么样,解决方案
在当今数据驱动的时代,服务器对于我们的工作和生活起着举足轻重的作用。而在众多影响服务器性能的关键因素当中,内存扮演着极其重要的角色。 服务器内存,也称RAM(Random Access Memory),是服务器核心硬件部…...
elasticsearch文档读写原理大致分析一下
文档写简介 客户端通过hash选择一个node发送请求,专业术语叫做协调节点 协调节点会对document进行路由,将请求转发给对应的primary shard primary shard在处理完数据后,会将document 同步到所有replica shard 协调节点将处理结果返回给…...
1 开发环境
开发环境(platformio python arduino框架)的搭建可以参考b站upESP32超详细教程-使用VSCode(基于Arduino框架)哔哩哔哩bilibili 这里推荐离线安装esp32库文件,要不然要等很久(b站教程很多) 搭…...
云视频,也称为视频云服务,是一种基于云计算技术理念的视频流媒体服务
云视频,也称为视频云服务,是一种基于云计算技术理念的视频流媒体服务。它基于云计算商业模式,为视频网络平台服务提供强大的支持。在云平台上,所有的视频供应商、代理商、策划服务商、制作商、行业协会、管理机构、行业媒体和法律…...
[Vision Board创客营]--使用openmv识别阿尼亚
文章目录 [Vision Board创客营]使用openmv识别阿尼亚介绍环境搭建训练模型上传图片生成模型 使用结语 [Vision Board创客营]使用openmv识别阿尼亚 🚀🚀五一和女朋友去看了《间谍过家家 代号:白》,入坑二刺螈(QQ头像也换…...
【Linux:lesson1】的基本指令
🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🚗打开Xshell,登陆root…...
20240511日记
今天工作内容: 1.二期2号机EAP测试 2.二期开门机器暂停(停轴,停流水线电机),关闭门后继续功能测试 3.针点位偏移还需要调整,未进行大批量验证是否偏移(S3模板点位测试,两台机各焊…...
蓝桥杯成绩已出
蓝桥杯的成绩早就已经出来了,虽然没有十分惊艳 ,但是对于最终的结果我是心满意足的,感谢各位的陪伴,关于蓝桥杯的刷题笔记我已经坚持更新了49篇,但是现在即将会告别一段落,人生即将进入下一个规划。我们一起…...
.kat6.l6st6r勒索病毒数据怎么处理|数据解密恢复
导言: 在数字时代的洪流中,网络安全领域的新挑战层出不穷。近期,.kat6.l6st6r勒索病毒的出现再次打破了传统安全防护的界限。这种新型勒索病毒不仅具有高超的加密技术,更以其独特的传播方式和隐蔽性,给全球用户带来了…...
Spring Batch 是什么?主要用于什么场景?
Spring Batch是一个开源的、基于Spring框架的批量处理框架,它提供了一系列用于批量数据处理的工具和API。Spring Batch的主要目标是简化和标准化批量数据的处理过程,使得开发者可以更加专注于业务逻辑的实现,而不是批量处理的复杂性。 Sprin…...
SQL-慢查询的定位及优化
定位慢查询sql 启用慢查询日志: 确保MySQL实例已经启用了慢查询日志功能。可以通过以下命令查看是否启用: SHOW VARIABLES LIKE slow_query_log;如果未启用,可以通过以下命令启用: SET GLOBAL slow_query_log ON;配置慢查询日志&…...
如何快速配置黑苹果:OpenCore Configurator的完整入门指南
如何快速配置黑苹果:OpenCore Configurator的完整入门指南 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator OpenCore Configurator是一款专为黑苹果…...
FairMOT实战避坑:从训练到部署的5个关键步骤与性能优化心得
FairMOT实战避坑指南:从训练到部署的5个关键优化策略 在计算机视觉领域,多目标跟踪(Multi-Object Tracking, MOT)一直是极具挑战性的任务。FairMOT作为近年来备受关注的解决方案,通过将检测和重识别(Re-ID)任务统一到一个框架中,实…...
别再让滤波延迟毁了你的心电信号!用MATLAB filtfilt函数实现零相位滤波的保姆级教程
生物医学信号处理中的零相位滤波:MATLAB filtfilt实战指南 在生物医学信号分析领域,心电图(ECG)等生理信号的精确处理直接关系到诊断的准确性。传统滤波方法带来的相位延迟会导致QRS波群等关键特征的时间偏移,严重时可能造成心率计算错误或病…...
Rimworld Mod制作入门:从零搭建你的第一个功能Mod
1. 为什么选择Rimworld Mod开发 Rimworld作为一款深度沙盒游戏,其魅力很大程度上来自于丰富的Mod生态。你可能已经玩过不少别人制作的Mod,但有没有想过自己动手创造一个?我刚开始接触Mod开发时也觉得很复杂,但实际尝试后发现&…...
yuzu模拟器完整指南:免费在电脑上玩Switch游戏的终极教程
yuzu模拟器完整指南:免费在电脑上玩Switch游戏的终极教程 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu是目前最受欢迎的免费开源任天堂Switch模拟器,让你能在Windows、Linux和Androi…...
3步掌握Jable视频下载神器:告别复杂抓包,一键保存高清视频
3步掌握Jable视频下载神器:告别复杂抓包,一键保存高清视频 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 还在为无法离线观看Jable.tv上的精彩视频而烦恼吗?每…...
Neovim集成GitHub Copilot:gp.nvim插件深度配置与实战指南
1. 项目概述:一个为Neovim量身打造的GitHub Copilot客户端如果你和我一样,是个重度Neovim用户,同时又对GitHub Copilot这类AI编程助手带来的效率提升欲罢不能,那你肯定也经历过一段纠结的时光。一边是VSCode里Copilot丝滑的代码补…...
独立开发者工具箱:Next.js、Supabase、AI应用与增长实战指南
1. 项目概述:一份为独立开发者量身定制的“生存工具箱”如果你和我一样,是一个单打独斗的独立开发者,或者是一个小团队的创始人,那你一定深有体会:我们最宝贵的资源不是钱,而是时间。每天一睁眼,…...
Python玩转CAD:用ezdxf从零绘制带属性的智能图块(附完整代码)
Python玩转CAD:用ezdxf从零绘制带属性的智能图块(附完整代码) 在工业设计和工程制图领域,CAD软件的自动化操作一直是提升效率的关键。传统手动绘图不仅耗时耗力,还容易在重复性工作中出现人为误差。而Python的ezdxf库为…...
Adobe-GenP 3.0终极指南:三步免费解锁Adobe全家桶创意软件
Adobe-GenP 3.0终极指南:三步免费解锁Adobe全家桶创意软件 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款专为Adobe Creative Clo…...

