当前位置: 首页 > 知识库问答 >
问题:

如何使用lambda表达式检查元素是否存在?

马清野
2023-03-14

具体来说,我有TabPane,我想知道其中是否有具有特定ID的元素。

所以,我想用Java中的lambda表达式来实现这一点:

boolean idExists = false;
String idToCheck = "someId";

for (Tab t : tabPane.getTabs()){
    if(t.getId().equals(idToCheck)) {
        idExists = true;
    }
}

共有3个答案

施昊然
2023-03-14

以上答案要求您malloc一个新的流对象。

public <T>
boolean containsByLambda(Collection<? extends T> c, Predicate<? super T> p) {

    for (final T z : c) {
        if (p.test(z)) {
            return true;
        }
    }
    return false;
}

public boolean containsTabById(TabPane tabPane, String id) {
    return containsByLambda(tabPane.getTabs(), z -> z.getId().equals(id));
}
...
if (containsTabById(tabPane, idToCheck))) {
   ...
}
谢铭
2023-03-14

虽然公认的答案是正确的,但我将添加一个更优雅的版本(在我看来):

boolean idExists = tabPane.getTabs().stream()
    .map(Tab::getId)
    .anyMatch(idToCheck::equals);

不要忽略使用Stream#map(),它允许在应用Predicate之前平整数据结构。

上官高逸
2023-03-14

尝试使用Lambda表达式的anyMatch。这是更好的方法

 boolean idExists = tabPane.getTabs().stream()
            .anyMatch(t -> t.getId().equals(idToCheck));
 类似资料:
  • 问题内容: 具体来说,我有TabPane,我想知道其中是否包含具有特定ID的元素。 因此,我想使用Java中的lambda表达式来做到这一点: 问题答案: 尝试使用Lambda表达式。这是更好的方法。

  • 问题内容: 示例:我正在检查是否存在像这样的数组元素: 但是,我不断收到此错误: 当然,我第一次想要实例时,$ instances不会知道密钥。我想我对可用实例的检查是错误的? 问题答案: 您可以使用语言构造或函数。 应该更快一些 (因为它不是函数) ,但是如果元素存在并且具有value,则将返回false 。 例如,考虑以下数组: 和这三个测试,依赖于: 第一个会得到您( 该元素存在,并且不为n

  • 我有一个简单的核心java问题。我有一个包含多个响应代码的列表。我根据列表中的响应代码返回消息。对于其中一个场景,我必须检查列表中是否包含任何一个响应代码。我用以下方法完成了它,但它忽略了它,代码转到else块。因此,如果代码是ES03或ES04或其中任何一个,我希望填充emailValidationMessage变量,但它不这样做。 谢谢

  • 问题内容: 我有一个数组,我需要检查该数组中是否存在元素,或者使用jq, fruit.json 从数组中获取该元素: 不起作用 问题答案: “包含”的语义一点都不简单。通常,最好使用“索引”来测试数组是否具有特定值,例如 IN / 1 如果您的jq有更好的解决方案,则使用它: 如果您的jq具有(与jq 1.5一样),那么这里是一个使用的快速定义:

  • 我最近接触了Java8,我正在尝试学习Lambda表达式。我想做一些图形计算,我的代码到目前为止: 所有这些代码都是用于图形的,除了和使用的操作之外,所有内容都是基本的数学(加、减、乘、模),并且可以单独针对每个像素执行。 现在的问题是:有可能在GPU上运行这个吗?或者这甚至是自动基于GPU的?(我记得在什么地方读到过这个,但我不确定)

  • 问题内容: 随着selenium2.0a2我有麻烦检查如果一个元素是可见的。 返回,不幸的是没有提供方法。我可以使用或两者都抛出一个来解决这个问题,但这感觉很脏。 还有更好的主意吗? 问题答案: 应该管用。