지난 아티클에서 Function 함수적 인터페이스에 대해서 살펴보았습니다. 이번 아티클에서는 Student라는 예제 클래스를 사용해 이 Function 함수적 인터페이스의 사용 예시를 만들어 보겠습니다.
우선 아래와 같이 Student 클래스를 선언합니다.
public class Student {
private String name;
private int englishScore;
private int mathScore;
// 생성자
public Student(String name, int englishScore, int mathScore) {
this.name = name;
this.englishScore = englishScore;
this.mathScore = mathScore;
}
public String getName() {
return name;
}
public int getEnglishScore() {
return englishScore;
}
public int getMathScore() {
return mathScore;
}
}
이제 이 Student 클래스를 활용하는 실행 클래스를 작성해 보겠습니다.
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.function.ToIntFunction;
public class ExampleMain {
private static List<Student> list = Arrays.asList(
new Student("스윙스", 90, 96),
new Student("한요한", 95, 93)
);
public static void printString( Function<Student, String> function ) {
for(Student student : list) { // list에 저장된 수만큼 루핑
System.out.print(function.apply(student) + " ");
}
System.out.println();
}
public static void printInt( ToIntFunction<Student> function ) {
for(Student student : list) { // list에 저장된 수만큼 루핑
System.out.print(function.applyAsInt(student) + " ");
}
System.out.println();
}
public static void main(String[] args) {
System.out.println("[학생의 이름]");
printString( t -> t.getName() );
System.out.println("[영어 점수]");
printInt( t -> t.getEnglishScore() );
System.out.println("[수학 점수]");
printInt( t -> t.getMathScore() );
}
}
/* 출력
[학생의 이름]
스윙스 한요한
[영어 점수]
90 95
[수학 점수]
96 93
*/
혹은, 다음과 같은 실행 클래스도 만들어 볼 수 있겠습니다.
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.function.ToIntFunction;
public class ExampleMain {
private static List<Student> list = Arrays.asList(
new Student("스윙스", 90, 96),
new Student("한요한", 95, 93)
);
public static double avg( ToIntFunction<Student> function ) {
int sum = 0;
for(Student student : list) {
sum += function.applyAsInt(student);
}
double avg = (double) sum / list.size();
return avg;
}
public static void main(String[] args) {
double englishAvg = avg(t -> t.getEnglishScore());
System.out.println("영어 평균: " + englishAvg);
double mathAvg = avg(t -> t.getMathScore());
System.out.println("수학 평균: " + mathAvg);
}
}
/*출력
영어 평균: 92.5
수학 평균: 94.5
*/
'Programming > JAVA' 카테고리의 다른 글
람다식(4) - 표준 API의 함수적 인터페이스 5 : Operator Functional Interface 2 (0) | 2023.07.03 |
---|---|
람다식(4) - 표준 API의 함수적 인터페이스 5 : Operator Functional Interface 1 (0) | 2023.06.18 |
람다식(4) - 표준 API의 함수적 인터페이스 4 : Function Functional Interface 1 (0) | 2023.06.10 |
람다식(4) - 표준 API의 함수적 인터페이스 3 : Supplier Functional Interface (0) | 2023.06.05 |
람다식(4) - 표준 API의 함수적 인터페이스 2 : Consumer Functional Interface (0) | 2023.06.04 |