메서드를 하나의 식으로 표현한 것.
메서드 이름과 반환값이 없기 때문에 익명 함수(Anonymous Function)라고 하기도 한다.
(매개변수) -> { 실행할 코드 }
() -> {}
() -> 1
() -> { return 1; }
(int x) -> x+1
(x) -> x+1
x -> x+1
(int x) -> { return x+1; }
x -> { return x+1; }
(int x, int y) -> x+y
(x, y) -> x+y
(x, y) -> { return x+y; }
(String lam) -> lam.length()
lam -> lam.length()
(Thread lamT) -> { lamT.start(); }
lamT -> { lamT.start(); }
//잘못된 유형 선언된 type과 선언되지 않은 type을 같이 사용 할 수 없다.
(x, int y) -> x+y
(x, final y) -> x+y
};
///람다식 표현 전
public class LambdaExample {
public static void main(String[] args) {
// 1. 익명 클래스를 사용해 Runnable 구현
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Task is running!");
}
};
// 2. 스레드 실행
new Thread(task).start();
// Thread 클래스의 생성자에 Runnable을 전달해 스레드를 실행합니다.
}
}
//람다식 표현 후
public class LambdaExample {
public static void main(String[] args) {
// 1. 람다 표현식을 사용해 Runnable 구현
Runnable task = () -> System.out.println("Task is running!");
// () -> System.out.println("Task is running!"): 매개변수가 없고 단일 문장을 실행하는 람다 표현식.
// 2. 스레드 실행
new Thread(task).start();
}
}
//람다식 표현 전
import java.util.*;
public class LambdaExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 1. 기본 for-each 루프를 사용해 요소 출력
for (String name : names) {
System.out.println(name);
}
}
}
//람다식 표현 후
import java.util.*;
public class LambdaExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 1. 람다 표현식을 사용해 요소 출력
names.forEach(name -> System.out.println(name));
// name -> System.out.println(name): 리스트의 각 요소를 출력하는 람다 표현식.
}
}
//람다식 표현 전
import java.util.*;
public class LambdaExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evens = new ArrayList<>();
// 1. 기본 for-each 루프를 사용해 조건에 맞는 요소 필터링
for (int number : numbers) {
if (number % 2 == 0) { // 조건: 짝수인지 확인
evens.add(number);
}
}
// 2. 결과 출력
System.out.println(evens); // 출력: [2, 4]
}
}
//람다 식 표현 후
import java.util.*;
import java.util.stream.Collectors;
public class LambdaExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 1. 스트림과 람다 표현식을 사용해 조건에 맞는 요소 필터링
List<Integer> evens = numbers.stream() // 스트림 생성
.filter(n -> n % 2 == 0) // 조건: 짝수인지 확인
.collect(Collectors.toList()); // 결과를 리스트로 수집
// 2. 결과 출력
System.out.println(evens); // 출력: [2, 4]
}
}