Java 中 Predicate.not() 方法及示例2025 年 1 月 6 日 | 阅读 4 分钟 Java 11 引入了一个名为 Predicate.not() 的工具,使否定谓词 (predicate) 更加容易。谓词经常用于过滤和条件逻辑,它们是函数式接口,表示接受单个参数并返回布尔值的函数。在 Java 11 之前,否定一个谓词需要一个更冗长的方法。Predicate.not() 使语法更清晰,更易于阅读。在本节中,我们将详细讨论 Predicate.not() 方法,并提供示例来说明如何使用它。 什么是谓词 (Predicate)?在 Java 中,谓词 (Predicate) 是 java.util.function 包中定义的一个函数式接口。它表示一个接受单个参数并产生布尔结果的函数。Predicate 接口中的主要方法是 test(T t),它根据提供的参数评估谓词。 传统的谓词否定在 Java 11 之前,需要使用 negate() 方法来否定一个谓词。例如,否定一个检查字符串是否为空的谓词,示例如下: 虽然这种方法有效,但在组合多个谓词或在更复杂的表达式中使用它时,可能会显得繁琐。 Predicate.not() 的引入Java 11 引入了 Predicate.not() 方法,提供了一种更直接的否定谓词的方法。Predicate.not() 方法是一个静态方法,它接受一个谓词并返回其否定。 此方法简化了否定谓词的语法,使代码更具可读性和简洁性。 Predicate.not() 方法的优点
示例 1:过滤字符串列表假设我们有一个字符串列表,我们想过滤掉空字符串。使用 Predicate.not(),我们可以如下实现: 文件名:PredicateNotExample.java 输出 [Java, Predicate, Not] 解释 PredicateNotExample 类展示了如何使用 Predicate.not() 函数从列表中过滤掉空字符串。该类的第一步是导入处理流、谓词和列表所需的包。main 方法创建了一个包含空字符串和非空字符串的字符串列表。 将此列表转换为流后,代码使用 Predicate.not(String::isEmpty) 结合 filter() 方法来排除空字符串。与其他技术相比,这种否定方式更清晰,更容易理解。通过将过滤后的结果收集回列表并打印,会产生输出 [Java, Predicate, Not]。 示例 2:否定自定义谓词考虑一个检查数字是否为偶数的自定义谓词。使用 Predicate.not(),您可以轻松创建一个检查数字是否为奇数的谓词: 文件名:PredicateNotExample.java 输出 [1, 3, 5] 解释 PredicateNotExample 类提供了一个示例,说明如何使用 Predicate.not() 函数过滤掉列表中的偶数,从而只保留奇数。该类导入了必要的谓词、流操作和列表处理包。 在 main() 方法中定义了一个名为 isEven 的谓词,用于确定给定数字是否为偶数。接下来,生成一个从 1 到 6 的整数列表。将此列表转换为流后,在 filter 方法中使用 Predicate.not(isEven) 来从列表中移除偶数,只留下奇数。通过将过滤后的流重新编译成列表并打印,会产生输出 [1, 3, 5]。 结论通过将 Predicate.not() 方法添加到 Java 11 标准库中,谓词的否定代码现在可以以更具表现力和可读性的方式编写。开发人员可以通过利用 Predicate.not() 构建更具可读性和简洁性的代码,尤其是在处理流和条件逻辑时。无论是过滤集合还是定义复杂条件,Predicate.not() 都提供了一种简单而优雅的谓词否定解决方案。 |
Java 代码结构和组织很大程度上依赖于包和接口。它们在各种情况下以及出于不同目的工作。本文将探讨 Java 包和接口背后的基本概念。包和接口都充当一种容器...
阅读 2 分钟
骰子游戏几个世纪以来一直吸引着玩家,散发着机遇和兴奋的光环。技术的出现使我们能够将这些体验带入数字领域,创造机会来制作引人入胜的模拟,捕捉掷骰子的精髓。在本节中,我们将...
5 分钟阅读
这是 Google、Amazon、TCS、Accenture 等顶级 IT 公司面试中经常问到的问题。通过解决该问题,人们希望检查被面试者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将计算...
5 分钟阅读
图案程序通常在面试中被问及,以检查逻辑实现和循环概念。在前一节中,我们讨论了各种图案,如三角形、树形、星形等。在本节中,我们将学习如何通过 Java 打印皇冠图案...
阅读 6 分钟
Two Sum - Pairs with Zero Sum 是另一个算法问题,也称为识别数组中和为零的整数对的问题。这个问题在编码面试和竞争性编程中非常普遍,因为它不仅需要...
5 分钟阅读
ArrayList 类似于大小可变的数组。ArrayList 类位于 Java.util 包中,并扩展了 List 接口。通过使用其内置的 add() 和 remove() 方法,可以非常轻松地向 ArrayList 中添加和删除元素。然而,there...
阅读 4 分钟
Java URLEncoder 是一个实用类,用于对 URL(统一资源定位符)进行编码。通过对 URL 进行编码可确保可靠性和安全性。当用户通过 get 方法请求特定站点时,表单参数及其值将添加到 '?' 符号之后...
阅读 3 分钟
Java 编程语言于 20 世纪 90 年代初由 Sun Microsystem 开发。Java 是一种面向对象、简单、高效、健壮的通用编程语言。它主要用于基于 Web 的企业应用程序。最初它被设计用于在不同平台上运行的嵌入式网络应用程序。当我们...
阅读 3 分钟
数字补码问题是一个涉及二进制运算和位操作的有趣挑战。在本节中,我们将详细探讨这个问题,深入研究其背后的理论,并提供一个全面的 Java 解决方案。这个问题通常出现在编码...
5 分钟阅读
HashMap 是 Java 中用于存储键值对的基本数据结构。它们通过键提供对值的快速高效访问,使其成为各种应用程序的流行选择。通常,您可能需要比较两个 HashMap 以识别差异或相似之处。在此...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India