如何使用lambdaexpression式检查元素是否存在?

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

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

boolean idExists = false; String idToCheck = "someId"; for (Tab t : tabPane.getTabs()){ if(t.getId().equals(idToCheck)) { idExists = true; } } 

尝试使用anyMatch Lambdaexpression式的anyMatch 。 这是更好的方法。

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

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

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

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