gwooden_코린이

java_Predicate_221205(11일차) 본문

java/11일차

java_Predicate_221205(11일차)

gwooden22 2022. 12. 5. 11:45
728x90

1. Predicate

- 매개변수 존재

- 리턴 값은 boolean으로 고정되어 있음

 

기본타입 : Predicate

정수타입 : IntPredicate

실수타입 : DoublePredicate

등등~ 으로 자료형 타입을 지정하고 시작할 수 있다.

 

package 오퍼레이터;

import java.util.function.Predicate;

public class Sample04 {

	public static void main(String[] args) {
		//10이상이면 true, 아니면 false
		Predicate<Integer> p = (a) -> {
			if(a >= 10) {
				return true;
			} else {
				return false;
			}
			
		};
		
		System.out.println(p.test(15));

	}

}


		if(p.test(15))
			System.out.println("10이상이다.");
		else
			System.out.println("10미만이다.");

 


package 오퍼레이터;

import java.util.function.Predicate;

public class StudentMain {
	
	static Student[] list = {
			new Student("홍길동", 90, 80, "컴공"),
			new Student("이순신", 95, 70, "통계"),
			new Student("김유신", 100, 60, "컴공")
	};
	//영어 평균 구하는 메서드 생성 
	static double avgEng(Predicate<Student> predicate) {
		int count = 0; //개수 구하는 변수
		int sum = 0; //합계 구하는 변수
		
		for(Student student : list) {
			if(predicate.test(student)) {
				count++;
				sum += student.getEng();
			}
		}
		return (double)sum/count;
	}

	public static void main(String[] args) {
		
		double avg; //평균 저장하는 변수
		
//		리턴값 : t.getMajor().equals("컴공")
//		t.getMajor() <--- 해당 값이 .equals()에 들어간 값과 같냐는 수식
		avg = avgEng(t -> t.getMajor().equals("컴공")); //람다식 구현
		
		System.out.println(avg);
		

	}

}


package 오퍼레이터;

import java.util.function.Predicate;

public class StudentMain {
	
	static Student[] list = {
			new Student("홍길동", 90, 80, "컴공"),
			new Student("이순신", 95, 70, "통계"),
			new Student("김유신", 100, 60, "컴공")
	};
	//영어 평균 구하는 메서드 생성 
	static double avgEng(Predicate<Student> predicate) {
		int count = 0; //개수 구하는 변수
		int sum = 0; //합계 구하는 변수
		
		for(Student student : list) {
			if(predicate.test(student)) {
				count++;
				sum += student.getEng();
			}
		}
		return (double)sum/count;
	}
	
	static int sumMath(Predicate<Student> predicate) {
		int sum = 0;
		
		for(Student student : list) {
			if(predicate.test(student)) {
				sum += student.getMath();
			}
		}
		return (int)sum;
	}

	public static void main(String[] args) {
		
		double avg; //평균 저장하는 변수
		double sum; //합계 구하는 변수
		
//		리턴값 : t.getMajor().equals("컴공")
//		t.getMajor() <--- 해당 값이 .equals()에 들어간 값과 같냐는 수식
		avg = avgEng(t -> t.getMajor().equals("컴공")); //람다식 구현
		
		System.out.println("컴공과 영어점수의 평균 : " + avg);
		
		
		sum = sumMath(t -> t.getMajor().equals("컴공")); //람다식 구현
		
		System.out.println("컴공과 수학점수의 합계  : " + sum);

	}

}


package 오퍼레이터;

import java.util.function.Predicate;

public class StudentMain {
	
	static Student[] list = {
			new Student("홍길동", 90, 80, "컴공"),
			new Student("이순신", 95, 70, "통계"),
			new Student("김유신", 100, 60, "컴공"),
			new Student("홍길동1", 90, 80, "컴공"),
			new Student("이순신1", 95, 70, "통계"),
			new Student("김유신1", 100, 60, "컴공")
	};
	//영어 평균 구하는 메서드 생성 
	static double avgEng(Predicate<Student> predicate) {
		int count = 0; //개수 구하는 변수
		int sum = 0; //합계 구하는 변수
		
		for(Student student : list) {
			if(predicate.test(student)) {
				count++;
				sum += student.getEng();
			}
		}
		return (double)sum/count;
	}
	
	//수학 점 수 합계 구하기
	static int sumMath(Predicate<Student> predicate) {
		int sum = 0;
		
		for(Student student : list) {
			if(predicate.test(student)) {
				sum += student.getMath(); // 점수 오른쪽으로 대입하면서 누적 +
			}
		}
		return (int)sum;
	}
	
	//학생 수 구하기
	static int cnt (Predicate<Student> predicate) {
		int count = 0;
		
		for(Student student : list) {
			if(predicate.test(student)) {
				count++; //True일때 카운트 개수 증가
			}
		}
		return (int)count;
	}
	

	public static void main(String[] args) {
		
		double avg; //평균 저장하는 변수
		int sum; //합계 구하는 변수
		int cnt; //학생 수 구하는 변수
		
		//영어 점수 평균 값 추출
		avg = avgEng(t -> t.getMajor().equals("컴공")); 
		System.out.println("컴공과 영어점수의 평균 : " + avg);
		
		//수학 점수 합계 값 추출
		sum = sumMath(t -> t.getMajor().equals("컴공"));
		System.out.println("컴공과 수학점수의 합계  : " + sum);
		
		//학생 수 추출
		cnt = cnt(t -> t.getMajor().equals("통계"));
		System.out.println("통계과 학생의 총 수 : " + cnt);

	}

}

728x90

'java > 11일차' 카테고리의 다른 글

java_스트림_221205(11일차)  (0) 2022.12.05
java_andThen/compose_221205(11일차)  (0) 2022.12.05
java_Operator(오퍼레이터)_221205(11일차)  (0) 2022.12.05
Comments