programing

람다 식을 사용하여 요소가 존재하는지 확인하는 방법은 무엇입니까?

prostudy 2022. 9. 9. 08:59
반응형

람다 식을 사용하여 요소가 존재하는지 확인하는 방법은 무엇입니까?

구체적으로는 TabPane을 가지고 있는데, 거기에 ID가 특정된 요소가 있는지 알고 싶습니다.

Java의 lamda 표현으로 이 작업을 수행해 보겠습니다.

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

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

람다 식을 사용해 보십시오.그것이 훨씬 더 나은 접근법이다.

 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.

위의 답변에서는 새로운 스트림오브젝트를 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))) {
   ...
}

언급URL : https://stackoverflow.com/questions/23004921/how-to-check-if-element-exists-using-a-lambda-expression

반응형