람다식
식별자 없이 실행가능한 함수
함수인데, 함수를 따로 만들지 않고 코드 한줄에 함수를 써서 그것을 호출하는 방식
문법이 간결한만큼 익숙해지면 가독성 면에서 장점이 크다.(람다식을 사용하지 말라는 사람도 많다.)
람다식 사용법
(매개변수, ...) -> { 실행문 ... }
(매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합니다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있으며 인자타입도 명시하지 않아도 된다.
기호는 매개 변수를 이용해서 중괄호 { } 바디를 실행한다는 뜻으로 해석하면 됩니다.
람다식 장점
- 코드를 간결하게 만들 수 있다.
- 코드가 간결하고 식에 개발자의 의도가 명확히 드러나므로 가독성이 향상됩니다.
- 함수를 만드는 과정없이 한번에 처리할 수 있기에 코딩하는 시간이 줄어듭니다.
- 병렬프로그래밍이 용이합니다.
람다식 단점
- 람다를 사용하면서 만드는 무명함수는 재사용이 불가능합니다.
- 디버깅이 다소 까다롭습니다.
- 람다를 남발하면 코드가 지저분해질 수 있습니다. (비슷한 함수를 계속 중복생성할 가능성이 높음)
- 재귀로 만들경우에는 다소 부적합한면이 있습니다.
람다식 간단예제
두개의 숫자 더하기
interface Compare{
public int compareTo(int a, int b);
}
public class Ramda2 {
//람다식 문법 (매개변수 목록)->{실행문}
public static void exec(Compare com) {
int k = 10;
int m = 20;
int value = com.compareTo(k, m);
System.out.println(value);
}
public static void main(String[] args) {
exec((i,j)->{
return i+j;
});
}
}
두개의 숫자중 큰 수 찾기
import extendsss.main;
public class Ramda3 {
@FunctionalInterface//함수형 인터페이스 체크 어노테이션
public interface MyNumber{
int getMax(int num1, int num2);
}
public static void main(String[] args) {
MyNumber max = (x,y)->(x>=y)? x:y;
System.out.println(max.getMax(10, 30));
}
}
Runnable 인스턴스 생성
public class RunnableEx {
public static void main(String[] args) {
Runnable runnable = () -> {
for (int i = 0; i < 30; i++) {
System.out.println(i);
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}
Thread 호출
Thread thread = new Thread( () -> {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
});
'Java > Java' 카테고리의 다른 글
Object-Oriented Programming(OOP) (0) | 2022.11.22 |
---|---|
[Java] 정규표현식(Regular Expression) (0) | 2022.11.20 |
[Java]문자열 함수 substr(), substring(), slice() (0) | 2022.11.20 |
[Java] 삼항 연산자 (0) | 2022.11.20 |
[Java]StringBuilder 란 ? (0) | 2022.11.20 |
댓글