반응형
Function 함수적 인터페이스는 매개값과 리턴값이 있는 applyXXX() 메소드를 가지고 있다.
이 메소드는 매개값을 리턴값으로 매핑(타입 변환)하는 역할을 한다.
인터페이스명 | 추상 메소드 | 설명 |
Function<T, R> | R apply(T t) | 객체 T를 객체 R로 매핑 |
BiFunction<T, U, R> | R apply(T t, U u) | 객체 T, U를 객체 R로 매핑 |
DoubleFunction<R> | R apply(double value) | double를 객체 R로 매핑 |
IntFunction<R> | R apply(int value) | int를 객체 R로 매핑 |
IntToDoubleFunction | double applyAsDouble(int value) | int를 double로 매핑 |
IntToLongFunction | long applyAsLong(int value) | int를 long으로 매핑 |
LongToDoubleFunction | double applyAsDouble(long value) | long을 double로 매핑 |
LongToIntFunction | int applyAsInt(long value) | long을 double로 매핑 |
ToDoubleBiFunction<T,U> | double applyAsDouble(T t, U u) | 객체 T, U를 double로 매핑 |
... 너무 많다. 그 이상은 자바 docs를 참고하자..
https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
Student.java
public class Student {
private String name;
private int mathScore;
private int englishScore;
public Student(String name, int mathScore, int englishScore) {
this.name = name;
this.mathScore = mathScore;
this.englishScore = englishScore;
}
public String getName() {
return name;
}
public int getMathScore() {
return mathScore;
}
public int getEnglishScore() {
return englishScore;
}
}
FunctionExample.java
public class FunctionExample {
private static List<Student> list = Arrays.asList(
new Student("깡냉", 100, 100),
new Student("멍청한깡냉", 0, 0)
);
public static void printString(Function<Student, String> function){
for(Student student : list){
System.out.print(function.apply(student) + " ");
}
System.out.println();
}
public static void printInt(ToIntFunction<Student> function){
for(Student student : list){
System.out.print(function.applyAsInt(student) + " ");
}
System.out.println();
}
public static double getAverage(ToDoubleFunction<Student> function){
int sum = 0;
for(Student student : list){
sum += function.applyAsDouble(student);
}
double average = sum / list.size();
return average;
}
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());
double englishAvg = getAverage(t -> t.getEnglishScore());
double mathAvg = getAverage(t -> t.getMathScore());
System.out.println("영어 폄균 점수 : " + englishAvg);
System.out.println("수학 평균 점수 : " + mathAvg);
}
}
-- 학생 이름 --
깡냉 멍청한깡냉
-- 영어 점수 --
100 0
-- 수학 점수 --
100 0
영어 폄균 점수 : 50.0
수학 평균 점수 : 50.0
2019/06/30 - [프로그래밍 노트/JAVA] - [JAVA] java.util.function FunctionalInterface(함수적 인터페이스) 종류
반응형
'프로그래밍 노트 > JAVA' 카테고리의 다른 글
[JAVA] Predicate 함수적 인터페이스 (Functional Interface) (0) | 2019.07.25 |
---|---|
[JAVA] Operator 함수적 인터페이스 (Functional Interface) (0) | 2019.07.25 |
[JAVA] Supplier 함수적 인터페이스(Functional Interface) (1) | 2019.07.01 |
[JAVA] Consumer 함수적 인터페이스(Functional Interface) (0) | 2019.07.01 |
[JAVA] java.util.function FunctionalInterface(함수적 인터페이스) 종류 (0) | 2019.06.30 |