如何使用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
之前将数据结构展平。