【java11】java11新特性之Predicate接口API改进

Java 11向Predicate接口引入了新方法not()来否定类似于negate方法的现有谓词,进一步增强了其功能,使得条件判断和组合更加灵活和方便。

Predicate.not()

Predicate.not方法用于创建一个取反的谓词(predicate),即返回一个对输入条件取反的Predicate。这个方法使得代码更加简洁和易读,特别是与流操作结合使用时。

Predicate.not方法声明如下:

static <T> Predicate<T> not(Predicate<? super T> target) {Objects.requireNonNull(target);return (Predicate<T>)target.negate();
}

Predicate.not方法使用如下:

package com.morris.java11;import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** Predicate.not()的使用*/
public class PredicateNotDemo {public static void main(String[] args) {List<Integer> list = Stream.iterate(1, i -> i <= 10, i -> i + 1).filter(Predicate.not(t -> (t % 2) == 0)).collect(Collectors.toList());System.out.println(list); // [1, 3, 5, 7, 9]}
}

多个谓词结合使用

可以通过使用Predicate接口的组合方法(如andornegate)来创建更复杂的条件判断。

package com.morris.java11;import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;/*** Predicate中and/or/not结合使用*/
public class PredicateComplexDemo {public static void main(String[] args) {List<String> names = List.of("Alice", "Bob", "", "Charlie", "David");// 创建多个谓词Predicate<String> startsWithA = name -> name.startsWith("A");Predicate<String> lengthGreaterThanThree = name -> name.length() > 3;// 组合谓词Predicate<String> complexPredicate = startsWithA.or(lengthGreaterThanThree).and(Predicate.not(String::isEmpty));List<String> filteredNames = names.stream().filter(complexPredicate).collect(Collectors.toList());System.out.println(filteredNames); // 输出 ["Alice", "Charlie", "David"]}
}

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

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

相关文章

FedAvg论文

论文&#xff1a;Communication-Efficient Learning of Deep Networks from Decentralized Data 原code Reproducing 通过阅读帖子进行的了解。 联邦平均算法就是最典型的平均算法之一。将每个客户端上的本地随机梯度下降和执行模型的平均服务器结合在一起。 联邦优化问题 数…

文案策划背后的秘密 | 职场高手养成记

要想在文案策划这个行当里混&#xff0c;首先得对自己的文字功底有足够的信心&#xff0c;那种“文章独步天下”的气势不可或缺。 要是没有这份自信&#xff0c;我建议你还是另寻他路。 要想跨入文案策划的大门&#xff0c;可以从以下几个方面入手&#xff1a; 1. 学习文案基…

6.7.13 MV-Swin-T:使用多视图 SWIN 变压器进行乳房 X 光检查分类

传统的乳腺癌分类深度学习方法主要集中在单视图分析上。然而,在临床实践中,放射科医生会同时检查乳房 X 线摄影检查中的所有视图,利用这些视图中固有的相关性来有效检测肿瘤。 在本文中,我们提出了一种完全基于 Transformer 的创新多视图网络,以解决乳房 X 线摄影图像分类…

使用docker-compose搭建达梦数据库主备集群

目录 1. Docker集群的搭建 2. 检查主备数据库 3. 主备集群的JDBC连接设置 1. Docker集群的搭建 达梦的镜像文件都是tar文件&#xff0c;通过docker load命令导入&#xff1a; docker load -i dm8_20240422_x86_rh6_64_rq_ent_8.1.3.140.tar 成功导入后&#xff0c;可看到…

Flutter娱乐与休闲类APP常用的第三方库总汇

Flutter娱乐与休闲类APP常用的第三方库总汇 娱乐与休闲类APP为用户提供了丰富的放松和娱乐方式&#xff0c;包括游戏、音乐、视频、阅读等多种形式。Flutter作为一个高效的跨平台移动应用开发框架&#xff0c;为这类应用的开发提供了强大的支持。本文将汇总Flutter娱乐与休闲类…

机器学习笔记——支持向量机

支持向量机 参数模型对分布需要假设&#xff08;这也是与非参数模型的区别之一&#xff09;间隔最大化&#xff0c;形式转化为凸二次规划问题 最大化间隔 间隔最大化是意思&#xff1a;对训练集有着充分大的确信度来分类训练数据&#xff0c;最难以分的点也有足够大的信度将…

68. UE5 RPG 处理多个角色后续bug

我们现在已经有了四个敌人角色&#xff0c;接下来&#xff0c;处理一下在战斗中遇到的问题。 处理角色死亡后还会攻击的问题 因为我们有角色溶解的效果&#xff0c;角色在死亡以后的5秒钟才会被销毁掉。所以在这五秒钟之内&#xff0c;角色其实还是会攻击。主要时因为AI行为树…

AI 大模型重点行业应用情况

1、AI 大模型重点行业应用情况总览 AI大模型将率先在互联网办公、金融等数字化程度较高的行业快速渗透&#xff0c;医疗、交通、 制造等行业的潜在渗透空间大。 2、AI 大模型在金融行业应用情况 金融行业的应用场景丰富&#xff0c;是最早进行数字化转型的机构&#xff0c;因此…

一文了解SpringBoot

1 springboot介绍 1)springboot是什么? Spring Boot是一个用于简化Java应用程序开发的框架。它基于Spring框架,继承了Spring框架原有的优秀特性,比如IOC、AOP等, 他并不是用来代替Spring的解决方案,而是和Spring框架紧密结合,进一步简化了Spring应用的整个搭建和开发过程…

angular2开发知识点

目录 文章目录 一、API 网关地址 配置二、服务注册使用三、模块组件注册使用四、html中style类动态绑定1. 单个类的绑定&#xff1a;[class.special]"isSpecial"2. 多个类的绑定&#xff1a;[ngClass]"{selected:status ,saveable: this.canSave,}"3. 单个…

Python中管理内存?

在Python中管理内存是一个重要但通常对开发者而言较为透明的主题&#xff0c;因为Python提供了自动内存管理功能&#xff0c;如垃圾回收机制&#xff0c;以简化内存管理的复杂性。然而&#xff0c;对于大型项目或需要优化性能的场景&#xff0c;理解Python的内存管理机制以及如…

LLM Algorithms(1): Flash Attention

目录 Background Flash Attention Flash Attention Algorithm 参考 NIPS-2022: Flash Attention: Fast and Memory-Efficient Exact Attention with IO-Awareness idea&#xff1a;减少资源消耗&#xff0c;提升或保持模型性能。普通attention的空间复杂度是 --》降低到F…

数据结构复习笔记

简答题 (3) 顺序表和链表的概念及异同 顺序表: 把逻辑上相邻的结点储存在物理位置上的相邻储存单元中&#xff0c;结点的逻辑关系由储存单元的邻接关系来体现.链表: 逻辑上相邻的结点存储再物理位置上非连续非顺序的存储单元中, 结点的逻辑关系由指向下一个结点的指针确保.相…

抓包工具 HttpAnalyzerFull_V7.6.4 的下载、安装、使用

目录 一、简介二、下载和安装三、如何注册四、使用介绍4.1 开始、停止、清空监控内容4.2 筛选监控内容4.3 监控内容显示 一、简介 Http Analyzer 是一款功能强大的数据包分析工具&#xff0c;它可以实时监控服务器返回的消息&#xff0c;支持64位Windows系统&#xff0c;可以同…

python中的进度条工具tqdm详解

tqdm 是 Python 中一个非常流行的进度条工具&#xff0c;常用于长时间运行的任务&#xff0c;如数据处理、训练机器学习模型等。tqdm 的主要优点是易用性和功能丰富&#xff0c;可以在多种场景下使用。下面是 tqdm 的详细介绍及一些常见用法示例&#xff1a; 安装 首先&#…

JUC-并发编程22-ThreadLocal、InheritableThreadLocal与TransmittableThreadLocal

目录 概述 1. ThreadLocal 基本原理 使用示例 局限性 2. InheritableThreadLocal 基本原理 使用示例 局限性 3. TransmittableThreadLocal 基本原理 使用示例 核心机制 TransmittableThreadLocal的源码分析 核心代码示例 4. 使用框架提供的上下文传递功能 示例…

kaggle竞赛实战9——模型融合

有三种方法&#xff0c; 第一种&#xff1a;均值融合&#xff0c;代码如下 data pd.read_csv(\ result/submission_randomforest.csv\ ) data[randomforest] data[target].values temp pd.read_csv(\ result/submission_lightgbm.csv\ ) …

C++必修:探索C++的内存管理

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. C/C的内存分布 我们首先来看一段代码及其相关问题 int globalVar 1; static…

华为OD刷题C卷 - 每日刷题 19(查找接口成功率最优时间段、最大N个数与最小N个数的和)

1、&#xff08;查找接口成功率最优时间段&#xff09;&#xff1a; 这段代码是解决“查找接口成功率最优时间段”的问题。它提供了一个Java类Main&#xff0c;其中包含main方法和getResult方法&#xff0c;以及一个辅助方法getSum&#xff0c;用于找出数组中最长的时间段&…

微信小程序毕业设计-网吧在线选座系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…