functional interface

news2024/11/15 9:05:20

在这里插入图片描述
更优雅

案例

要在TodoTaskRepository写find方法找到对应task列表,传入自定义的如何find

要传入两个参数,返回一个bool,在文档里找这样的functional interface
java8官方文档-Package java.util.function
BiPredicate是这样的
在这里插入图片描述
接口函数是test

public class TodoTaskRepository {
    private final List<TodoTask> tasks;
		 
		 public <T> List<TodoTask> find(T field, BiPredicate<T,TodoTask> filter) {
		        var tasksFound = new ArrayList<TodoTask>();
		        for (final TodoTask task : tasks) {
		            if(filter.test(field, task)) {
		                tasksFound.add(task);
		            }
		        }
		        return tasksFound;
		    }
}

单元测试

在find传入的参数中直接实现了接口函数test:(field, task) -> field.equals(task.getID())
|| (field,task)->field.equals(task.getStatus())

			@ParameterizedTest
            @ValueSource(ints = {1, 2, 3, 4, 5})
            public void should_return_task_by_given_id(int givenId) {
                // Given
                final var todoTaskRepository = new TodoTaskRepository(this.allTasks);
                // When
                final var taskListFound = todoTaskRepository.find(givenId, ((field, task) -> field.equals(task.getID())));
                // Then
                assertTrue(taskListFound.size() > 0);
                for (final TodoTask taskFound : taskListFound) {
                    assertEquals(givenId, taskFound.getID());
                }
            }
			@ParameterizedTest
            @EnumSource(TodoTaskStatus.class)
            public void should_return_task_by_given_status(TodoTaskStatus givenStatus) {
                // Given
                final var todoTaskRepository = new TodoTaskRepository(this.allTasks);
                // When
                final var taskListFound = todoTaskRepository.find(givenStatus, (field,task)->field.equals(task.getStatus()));
                // Then
                assertNotNull(taskListFound);
                assertTrue(taskListFound.size() > 0);
                for (final TodoTask taskFound : taskListFound) {
                    assertEquals(givenStatus, taskFound.getStatus());
                }
            }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Numpy基础——人工智能基础

文章目录一、Numpy概述1.优势2.numpy历史3.Numpy的核心&#xff1a;多维数组4.numpy基础4.1 ndarray数组4.2 内存中的ndarray对象一、Numpy概述 1.优势 Numpy(Nummerical Python),补充了Python语言所欠缺的数值计算能力&#xff1b;Numpy是其它数据分析及机器学习库的底层库&…

GitLab CI/CD实现代码推送后自动maven打包发布

1、GitLab CI/CD介绍 CI(Continuous Intergration)&#xff1a;即持续集成&#xff0c;将代码的合并、部署、自动化测试都在一起&#xff0c;不断地执行这个过程&#xff0c;并对结果反馈。 CD(Continuous Delivery)&#xff1a;即持续交付&#xff0c;持续交付是一种软件工程方…

别具一格的婚礼,VR全景+婚礼的优势展现在哪里?

随着90后、95后逐渐步入结婚的主力军中&#xff0c;如何策划一场别具一格的婚礼是许多年轻人所头疼的&#xff0c;那么今年我们就可以玩点新潮的&#xff0c;VR婚礼或许是个不错的选择。 VR全景婚礼就是通过全景摄像机对婚礼进行记录&#xff0c;不但可以帮助新人捕捉婚礼的精彩…

对S参数的理解II

本篇文章特别感谢粉丝朋友“千年的呢喃”&#xff0c;他给我推荐了一本书&#xff0c;写的非常好 Micro Wave and RF Design&#xff0c;有需要的朋友自行下载。 之前关于S参数也写过几篇文章了&#xff0c;但一直以来都有一个历史遗漏问题没有解决&#xff0c;那就是&#xf…

ElasticSearch-学习笔记05【SpringDataElasticSearch】

Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】Ela…

【IVIF的超分重建】

Multimodal super-resolution reconstruction of infrared and visible images via deep learning &#xff08;基于深度学习的红外和可见光图像多模态超分辨率重建&#xff09; 提出了一种基于编解码器结构的红外-可见光图像融合方法。图像融合任务被重新表述为保持红外-可见…

2023年3月AMA-CDGA/CDGP数据治理认证考试这些城市可以报名

目前2023年3月5日CDGA&CDGP开放报名的城市有&#xff1a;北京、上海、广州、深圳、杭州、重庆&#xff0c;西安&#xff0c;成都&#xff0c;长沙&#xff0c;济南&#xff0c;更多考场正在增加中… DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业…

Echarts 设置折线图线条样式(虚线+粗细+阴影)

第012个点击查看专栏目录Echarts折线图的lineStyle属性可以设置折线的颜色&#xff0c;粗细&#xff0c;类型&#xff0c;线段末端类型&#xff0c;阴影&#xff0c;透明度&#xff0c;偏移等属性。文章目录示例效果示例源代码&#xff08;共128行&#xff09;相关资料参考专栏…

【Java|多线程与高并发】 使用Thread 类创建线程的5种方法如何查看程序中的线程

文章目录前言线程创建1.继承Thread类重写run()方法如何查看程序中的线程?2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runnable5.⭐使用Lambda表达式,创建线程(重要)Thread 的常见构造方法总结前言 在这里主要补充说明一些问题,方便更好地理解下面的…

conda安装nodejs版本过低解决方法

conda命令直接安装nodejs时&#xff0c;可能会由于镜像源中nodejs版本过低导致没法安装高本版的nodejs&#xff0c;导致无法jupyterlab使用一些扩展插件。 解决方法如下&#xff1a;&#xff08;windows环境下直接按提示下载版本安装就行&#xff0c;此处只介绍linux环境的解决…

2023上半年软考中级系统集成项目管理工程师2月25日开班

系统集成项目管理工程师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职…

今天面试招了个28K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在20~30k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不…

2023年上半年软考高项信息系统项目管理师2月25日开班

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…

每天一道大厂SQL题【Day09】充值日志SQL实战

每天一道大厂SQL题【Day09】充值日志SQL实战 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&#…

MMDetection(五)

目标检测工具包 MMDetection MMDetection 可以做什么 ➢ MMDetection 提供 400 余个性能优良的预训练模型&#xff0c;开箱即 用&#xff0c;几行 Python API 即可调用强大的检测能力 ➢ MMDetection 涵盖 60 余个目标检测算法&#xff0c;并提供方便易用的 工具&#xff0c;…

【Spring Cloud】如何修改Feign的日志记录级别

本期目录前言1. 介绍2. 方式一&#xff1a;配置文件1&#xff09;全局生效2&#xff09;局部生效3. 方式二&#xff1a;Java代码1&#xff09;全局配置2&#xff09;局部配置前言 本次示例代码的文件结构如下图所示。 1. 介绍 Feign 允许我们自定义配置&#xff0c;下面是 …

kubernetes集群部署springcloud项目【AL】【未写完】

kubernetes集群部署springcloud项目【AL】 &#xff08;先手工做&#xff0c;非自动化&#xff09; #环境&#xff1a; 192.168.73.138 master 192.168.73.139 node1 192.168.73.140 node2 192.168.73.137 harbor、mysqlgit clone https://github.com/lizhenliang/simple-…

leetcode.1234 替换子串得到平衡字符串 - 反向滑动窗口

1234. 替换子串得到平衡字符串 题目&#xff1a; 有一个只含有 Q, W, E, R 四种字符&#xff0c;且长度为 n 的字符串。 假如在该字符串中&#xff0c;这四个字符都恰好出现 n/4 次&#xff0c;那么它就是一个「平衡字符串」。 给你一个这样的字符串 s&#xff0c;请通过「替换…

信息安全管理

信息安全管理信息安全管理信息安全风险管理信息安全管理体系应急响应与灾难恢复应急响应概况信息系统灾难修复灾难恢复相关技术信息安全管理 管理概念&#xff1a;组织、协调、控制的活动&#xff0c;核心过程的管理控制 管理对象和组成&#xff1a;包括人员在内相关资产&…

【ArcGIS Pro二次开发】(3):UI管理_显示隐藏Tab、Group、Control等控件

在ArcGIS Pro工作中&#xff0c;有时候会涉及到工具栏UI的管理&#xff0c;比如&#xff0c;打开模型构建器时&#xff0c;工具栏才会出现新的选项卡(Tab)【ModelBuilder】&#xff0c;工程未做更改&#xff0c;则【保存】按钮显示灰色不可用。 下面以一个小例子来学习一下。 一…