gwooden_코린이
java_Predicate_221205(11일차) 본문
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