람다와 스트림3 Predicate 람다 조건식
predicate = 조건식 boolean 값을 반환
and() , or() , nagate() = not , 등으로 두 predicate를 하나로 결합(default 메서드)
predicate 는 함수형 인터페이스이다.
predicate<Integer> p = i -> i<100;
predicate<Integer> q = i -> i<200;
predicate<Integer> r = i -> i%2 == 0;
predicate 는 조건식을 가지고 있다,
true / false의 결과값을 반환한다.
predicate<Integer> notP = p.negate() // p의 결과값을 반대로 반환한다. 즉(100 <= i)
predicate<Integer> all = notP.and(q).or(r); 의 식은
//100 <= i && i < 200 || i%2 == 0
notP = (100 <= i)
.and(q) = (&& i < 200)
.or(r) = (|| i%2 == 0)
predicate<Integer> all2 = notP.and(a.or(r))
// 100<= i && (i < 200 || i%2 == 0)
notP = (100 <= i)
.and(a.or(r)) = i < 200 || i%2 == 0
pridicate 를 사용시에는 predicate가 가진 추상메서드 test()를 호출
all.test(2); //true
all2.test(2); //true
등가비교를 위한 pridicate의 작성에는 isEquals()를 사용 (static 메서드)
predicate<String> p = predicate.isEquals.isEquals(str1); isEquals()는 static 메서드
boolean result = p.test(str2); // str1과 str2가 같은지 비교 결과를 반환
boolean result = predicate.isEquals(str1).test(str2)
'JAVA' 카테고리의 다른 글
람다6 메소드 참조 (0) | 2023.03.15 |
---|---|
람다5 함수 두개를 연결 andThan (0) | 2023.03.15 |
람다3 함수형 인터페이스 (0) | 2023.03.15 |
람다2 (0) | 2023.03.14 |
람다1 (0) | 2023.03.14 |