首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用lambda表达式检查元素是否存在?

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

Stack Overflow用户
提问于 2014-04-11 14:19:43
回答 3查看 159.7K关注 0票数 137

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

所以,我想用Java中的lambda表达式来做这件事:

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

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-11 14:24:16

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

 boolean idExists = tabPane.getTabs().stream()
            .anyMatch(t -> t.getId().equals(idToCheck));
票数 313
EN

Stack Overflow用户

发布于 2016-12-13 03:45:31

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

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

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

票数 55
EN

Stack Overflow用户

发布于 2018-02-23 17:58:43

以上答案要求您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))) {
   ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23004921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档