Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

함수적 인터페이스 - Predicate 본문

Java/Java Basic

함수적 인터페이스 - Predicate

snd-snd 2019. 9. 3. 22:13

1. Predicate

1) 매개값을 조사해 true / false 형식으로 반환하는 함수적 인터페이스

2) 매개값을 조사하는 testXXX() 메소드를 가지고 있다.

3) 반환타입은 모두 boolean 타입으로 고정 되어 있다.

 

Interface Name Abstract Method Remarks
Predicate<T> boolean test(T t) 객체 T를 조사
BiPredicate<T, U> boolean test(T t, U u) 객체 T와 U를 비교 조사
DoublePredicate boolean test(double value) double 값을 조사
IntPredicate boolean test(int value) int 값을 조사
LongPredicate boolean test(long value) long 값을 조사

<표> Predicate 함수적 인터페이스의 종류



 

PredicateExample.java

public class PredicateExample {
	
	private static List<Student> list = Arrays.asList(
			new Student("홍길동", "남자", 91),
			new Student("장성채", "여자", 92),
			new Student("감을석", "남자", 96),
			new Student("강혜리", "여자", 99)
			);
	
	 public static double avg(Predicate<Student> predicate) {
		 int count = 0, sum = 0;
		 for (Student student : list) {
			 if (predicate.test(student)) {
				 count++;
				 sum += student.getScore();
			 }
		 }
		 return (double)sum/count;
	 }
	
	public static void main(String[] args) {
			
		double maleAvg = avg(student -> student.getGender().equals("남자"));
		System.out.println("남자 평균 점수:" + maleAvg);
		
		double femaleAvg = avg(student -> student.getGender().equals("여자"));
		System.out.println("여자 평균 점수:" + femaleAvg);
		
	}
}

 

// 실행결과 //
----------------------------------------------------
남자 평균 점수:93.5
여자 평균 점수:95.5

 

 

2. 정적 메소드

1) isEqual() 정적 메소드

(1) Predicate<T> 함수적 인터페이스가 가지고 있는 정적 메소드로 객체를 비교할 때 사용

(2) 내부적으로 Objects 클래스의 정적 메소드인 equals 메소드를 사용

 

// 기본문법
Predicate<Object> predicate = Predicate.isEqual(targetObject);
boolean result = pridicate.test(sourceObject);

 

 

sourceObject targetObject return
null null true
not null null false
null not null false
not null not null true

<표> Objects.equals(sourceObject, targetObject)의 반환값

 




IsEqualExample.java

public class IsEqualExample {

	public static void main(String[] args) {

		Predicate<String> pdc;
		
		pdc = Predicate.isEqual(null);
		System.out.println("null, null : " + pdc.test(null));
		
		pdc = Predicate.isEqual("Java");
		System.out.println("null, Java : " + pdc.test(null));
		
		pdc = Predicate.isEqual("Temp");
		System.out.println("Java, Temp : " + pdc.test("Java"));
		
		pdc = Predicate.isEqual("Java");
		System.out.println("Java, Java : " + pdc.test("Java"));
	}
}

 

// 실행결과 //
----------------------------------------------------
null, null : true
null, Java : false
Java, Temp : false
Java, Java : true

'Java > Java Basic' 카테고리의 다른 글

컬렉션 - List  (0) 2019.09.04
컬렉션 프레임워크 (Collection Framework)  (0) 2019.09.03
함수적 인터페이스 - Operator  (0) 2019.09.03
함수적 인터페이스 - Function  (0) 2019.09.03
함수적 인터페이스 - Supplier  (0) 2019.09.03
Comments