package chapter19;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
/*
람다 표현식
: 자바 8에서 도입된 함수형 프로그래밍 스타일의 표현식
> 익명 함수를 간결하게 표현하는 방법(가독성, 간결성 향상)
람다의 기본 형식
(매개변수) -> {실행할 코드}
lambda 예시
1) 매개변수 반환값이 없는 Lambda
()-> System.out.println("Hello, Lambda!");
2) 매개변수가 하나인 람다
x-> x*x;
3) 매개변수가 두 개 이상인 람다
(a, b)-> a+ b;
== 자바의 함수형 인터페이스 ==
1) Runnable
: 반환값이 없는 작업을 실행할 때 사용
2) Comparator<T>
: 두 객체를 비교하는 메소드를 정의하는 인터페이스
3) Function<T, R>
: 입력값을 받아 다른 타입의 결과값을 반환하는 인터페이스
*/
public class Lambda01 {
public static void main(String[] args) {
Runnable r= ()->{
System.out.println("프로그램 실행");
// run() 생략
};
// 반환이 없는 인터페이스의 실행
r.run();
Comparator<Integer> comparator= (x,y)-> x-y;
System.out.println(comparator.compare(10, 20));
List<Integer> numbers= Arrays.asList(5,3,8,1,2,7);
Collections.sort(numbers, comparator);
System.out.println(numbers);
Function<String, Integer> fx= s-> Integer.parseInt(s);
Integer num= fx.apply("10");
System.out.println(num);
// +) andThen 메소드: 사용 후 반환값을 활용
Integer num2= fx.andThen(result-> result+100).apply("20");
System.out.println(num2);
Predicate<Integer> even= n-> n%2==0;
System.out.println(even.test(10));
System.out.println(even.test(11));
Supplier<Integer> role= ()-> {
Integer result= num+999;
return result;
};
// >> get method로 반환값 출력
System.out.println(role.get());
//Counsumeer interface: 하나의 매개변수를 받고 아무 결과도 반환하지 않는 작업을 담당
Consumer<String> transform= s->{
System.out.println(s+ "서버에 접속 완료");
System.out.println(s+ "님 환영합니다.");
};
transform.accept("gwon");
}
}
'java' 카테고리의 다른 글
java 기본 용어 간단 정리 (0) | 2024.09.21 |
---|---|
java 활용 예시(예외) (0) | 2024.09.19 |
java 활용 예시 (Builder) (0) | 2024.09.19 |
java활용 예시(Stream) (1) | 2024.09.13 |
java활용 예시(lambda expression) (0) | 2024.09.13 |