반응형
람다 식을 사용하여 요소가 있는지 확인하는 방법은 무엇입니까?
특히 TabPane이 있는데 특정 ID를 가진 요소가 있는지 알고 싶습니다.
따라서 Java에서 람다 식으로 이것을 수행하고 싶습니다.
boolean idExists = false;
String idToCheck = "someId";
for (Tab t : tabPane.getTabs()){
if(t.getId().equals(idToCheck)) {
idExists = true;
}
}
anyMatch
Lambda Expression을 사용해보십시오 . 훨씬 더 나은 접근 방식입니다.
boolean idExists = tabPane.getTabs().stream()
.anyMatch(t -> t.getId().equals(idToCheck));
받아 들여지는 대답은 정확하지만 더 우아한 버전을 추가하겠습니다 (내 의견으로는).
boolean idExists = tabPane.getTabs().stream()
.map(Tab::getId)
.anyMatch(idToCheck::equals);
.NET Framework를 적용하기 전에 데이터 구조를 평면화 할 수있는 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))) {
...
}
반응형
'development' 카테고리의 다른 글
정수 범위를 나타내는 C # 유형이 있습니까? (0) | 2020.08.16 |
---|---|
Vim에서 선택 항목 검색 (0) | 2020.08.15 |
iphone / ipad : NSAttributedString을 정확히 어떻게 사용합니까? (0) | 2020.08.15 |
'tail'명령에 해당하는 Windows (0) | 2020.08.15 |
Xcode 5 및 자산 카탈로그 : LaunchImage를 참조하는 방법은 무엇입니까? (0) | 2020.08.15 |