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 |