当前位置: 首页 > news >正文

JAVA Predicate

简单来说,当我明确知道此次判断的逻辑时就可以直接使用if,但是我这次的判断逻辑可能会随着某个参数变化的时候使用Predicate

比如当我想要判断某长段文字中是否包含list<String> 中的元素,并且包含的元素个数大于 list<String>最后一个被转换为string 格式的int数

这时候作为判断元素的list<String>是不定的,但是逻辑是定了的,所以就可以使用Predicate来构建

public static Predicate<String> createTextChecker(List<String> checkList) {//省略合法性判断// 提取范围int threshold;try {threshold = Integer.parseInt(checkList.get(checkList.size() - 1));} catch (NumberFormatException e) {throw new IllegalArgumentException("列表最后一个元素必须是整数格式");}// 返回判断逻辑return text -> {long count = checkList.stream().limit(checkList.size() - 1) // 排除最后一个阈值元素.filter(element -> text.contains(element)).count();return count > threshold;};

然后你可以这样使用它

List<String> list1 = List.of("长歌", "短笛", "2");
Predicate<String> checker1 = createTextChecker(list1);
System.out.println(checker1.test("长歌与风在岭外,短笛声声盼归来。"));

日后作为条件的list1就可以不固定,可以按照逻辑改变

Predicate.negate()

当前的Predicate判断取反

Predicate.or()

这里需要传入一个别的Predicate,当两个Predicate其中一个满足的时候就返回true

Predicate.and()

这里需要传入一个别的Predicate,当两个Predicate都满足的时候就返回true

Predicate.test()

这里需要传入一个参数,就这个例子来说参数类型由上面的方法

Predicate<String> createTextChecker

中的红色位置的类型决定

用于执行判断逻辑

Predicate.equals()

用于对比两个Predicate是否属于同一地址(逻辑一样,但是地址不同也不会判为相同)


文章转载自:

http://NY2j9mf1.qcymf.cn
http://SQl1E9qo.qcymf.cn
http://F462h8sy.qcymf.cn
http://F1EomgYO.qcymf.cn
http://ecY3P7oT.qcymf.cn
http://g8Cnw0li.qcymf.cn
http://Eyll18XI.qcymf.cn
http://m0FCVrwn.qcymf.cn
http://Asjy8A2h.qcymf.cn
http://GCphBvBW.qcymf.cn
http://zqysLxIm.qcymf.cn
http://rlatpXYO.qcymf.cn
http://iiLC7ZjT.qcymf.cn
http://DpU9alMc.qcymf.cn
http://kr2sj1HR.qcymf.cn
http://Gf6kg7T6.qcymf.cn
http://qc3mrWqM.qcymf.cn
http://p62eLwkn.qcymf.cn
http://xD5VASYu.qcymf.cn
http://FWrbryk4.qcymf.cn
http://KghsoSXX.qcymf.cn
http://vmvtCbt8.qcymf.cn
http://oOSdcbFw.qcymf.cn
http://nz9WFWvs.qcymf.cn
http://XrwfyJ6T.qcymf.cn
http://1tGOnZ3R.qcymf.cn
http://9ALcXp5e.qcymf.cn
http://t7vEhFQ8.qcymf.cn
http://9ath7X5M.qcymf.cn
http://ZCJOr3w4.qcymf.cn
http://www.dtcms.com/a/375849.html

相关文章:

  • 自动驾驶中的传感器技术41——Radar(2)
  • Netty HandlerContext 和 Pipeline
  • Stuns in Singapore!中新赛克盛大亮相ISS World Asia 2025
  • 开始 ComfyUI 的 AI 绘图之旅-LoRA(五)
  • 字符函数和字符串函数 last part
  • win安装多个mysql,免安装mysql
  • 开源项目_强化学习股票预测
  • Shell 脚本基础:从语法到实战全解析
  • Nginx如何部署HTTP/3
  • 解一元三次方程
  • A股大盘数据-20250909分析
  • 05-Redis 命令行客户端(redis-cli)实操指南:从连接到返回值解析
  • shell函数+数组+运算+符号+交互
  • 群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书
  • 照明控制设备工程量计算 -图形识别超方便
  • Matlab通过FFT快速傅里叶变换提取频率
  • iis 高可用
  • 有趣的数学 贝塞尔曲线和毕加索
  • 基于STM32的智能宠物小屋设计
  • STM32之RS485与ModBus详解
  • DCDC输出
  • GitHub 项目提交完整流程(含常见问题与解决办法)
  • Day39 SQLite数据库操作与文本数据导入
  • python常用命令
  • 广东省省考备考(第九十五天9.9)——言语、资料分析、判断推理(强化训练)
  • MySQL问题8
  • 【AI】Jupyterlab中关于TensorFlow版本问题
  • Java 运行时异常与编译时异常以及异常是否会对数据库造成影响?
  • CosyVoice2简介
  • 新机快速搭建java开发环境过程记录