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

2022-08-31 08:09:39

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

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

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

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

答案 1

尝试使用 Lambda 表达式的任意匹配项。这是更好的方法。

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

答案 2

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

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

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


推荐