java

java활용 예시(lambda expression)

goshek 2024. 9. 13. 14:37

package chapter16;

import java.util.ArrayList;
import java.util.Comparator; //비교
import java.util.List;

/*
  Lambda Expression
  : 함수형 인터페이스 구현에 사용, 자바 8에서 도입된 기능
  >> 간결성, 함수형 프로그래밍 지원등의 특징
  >> 익명 클래스를 대체하여 코드의 가독성 향상에 기여
 
  = 기본 형태 =
  (매개 변수1, 매개 변수2, ...)-> {실행할 코드}
 
  매개변수: 함수형 인터페이스에서 메소드와 동일한 매개변수를 사용
  화살표: 매개변수와 실행할 코드의 구분
  코드 블록: 중괄호 영역 
  cf) 단일 표현식인 경우 중괄호 생략 가능
 */
class Student{
private String name;
private int score;

public Student(String name, int score) {
this.name= name;
this.score= score;
}
public String getName() {
return name;
}

public int getScore() {
return score;
}

}

//인터페이스 정의 -성적 계산
interface Grading{
String calculateGrade(Student student); //추상 메소드

}

public class C_Lambda01 {

public static void main(String[] args) {
List<Student> students= new ArrayList<Student>();
students.add(new Student("LEE", 85));
students.add(new Student("KIM", 75));
students.add(new Student("KWON", 90));
students.add(new Student("YEON", 66));
students.add(new Student("HWANG", 55));

// 람다 표현식을 사용한 성적 계산
Grading grading= (Student student)->{
int score= student.getScore();
if(score>=100 || score< 0) {
System.out.println("error");
return "0";
}
else if(score>=90) {
return "A";
}
else {
return "D";
}
};
for(Student student:students) {
System.out.println(student.getName()+ "의 성적: "+ grading.calculateGrade(student));
}
students.sort(Comparator.comparingInt(Student::getScore));
students.sort(Comparator.comparingInt(Student::getScore).reversed());
for(Student student:students) {
System.out.println(student.getName()+ "의 성적: "+ student.getScore());
}

// (Student st)-> getScore(st);
// Student::getScore

//(x)-> 인스턴스.인스턴스메소드(x);
// 인스턴스::메소드명

// (x)-> 클래스명.메소드명(x);
//클래스::메소드명
}

}










'java' 카테고리의 다른 글

java 활용 예시 (Builder)  (0) 2024.09.19
java활용 예시(Stream)  (1) 2024.09.13
java 활용 예시(내부 클래스)  (0) 2024.09.13
java활용 예시(MVC 패턴)  (2) 2024.09.10
java 활용 예시(Collection- Set)  (0) 2024.09.10