본문 바로가기

Programming/JAVA

람다식(4) - 표준 API의 함수적 인터페이스 4 : Function Functional Interface 2

JAVA logo image

 

 

 

지난 아티클에서 Function 함수적 인터페이스에 대해서 살펴보았습니다. 이번 아티클에서는 Student라는 예제 클래스를 사용해 이 Function 함수적 인터페이스의 사용 예시를 만들어 보겠습니다. 

 

 

람다식(4) - 표준 API의 함수적 인터페이스 4 : Function Functional Interface 1

이번 아티클에서는 Function 함수적 인터페이스에 대해서 살펴보겠습니다. Function 함수적 인터페이스의 특징은, 파라미터 값을 받아 리턴 값으로 타입 변환(매핑)하는 역할을 한다는 점입니다. 즉,

nozeroslope.tistory.com

 

 


 

우선 아래와 같이 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
*/