Building value

Java[람다식(Lambda)] 본문

Java

Java[람다식(Lambda)]

developer_Michael 2023. 3. 29. 19:04
반응형

람다식은 자바 8부터 추가된 함수형 프로그래밍을 지원하는 기능입니다. 

 

람다식을 사용하면 코드를 간결하게 작성할 수 있으며, 함수를 객체처럼 다룰 수 있습니다. 

 

람다식은 함수형 인터페이스를 구현하는 객체를 간편하게 만들 수 있습니다.

람다식의 기본 문법은 다음과 같습니다.

(parameter) -> { expression }

위 문법에서 parameter는 매개변수를 의미하며, expression은 람다식의 실행 내용을 나타냅니다. 

 

만약 매개변수가 없다면, 괄호는 생략할 수 있습니다. 

 

또한, 실행 내용이 단일 문장이라면, 중괄호도 생략할 수 있습니다.

다음은 람다식을 사용한 예시 코드입니다.

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

// 람다식을 사용하여 짝수를 필터링하고 출력하는 예시
list.stream()
    .filter(number -> number % 2 == 0)
    .forEach(System.out::println);

위 코드에서는 ArrayList를 생성한 후, stream() 메서드를 사용하여 스트림을 생성합니다. 

 

그리고 filter() 메서드를 사용하여 짝수를 필터링한 후, forEach() 메서드를 사용하여 출력합니다. 

 

이때 filter() 메서드에서 사용한 람다식은 number % 2 == 0으로, number가 2로 나누어 떨어지는지 검사합니다. 

 

또한, forEach() 메서드에서 사용한 람다식은 System.out::println으로, 인자로 받은 값을 출력합니다.

public class Example {
    public static void main(String[] args) {
        // 람다식을 사용하여 Runnable 객체 생성
        Runnable task = () -> {
            for (int i = 0; i < 10; i++) {
                System.out.println(Thread.currentThread().getName() + ": " + i);
            }
        };
        
        // 스레드 생성
        Thread thread1 = new Thread(task, "Thread 1");
        Thread thread2 = new Thread(task, "Thread 2");
        
        // 스레드 시작
        thread1.start();
        thread2.start();
    }
}

// 출력 결과:
Thread 2: 0
Thread 1: 0
Thread 2: 1
Thread 1: 1
Thread 2: 2
Thread 1: 2
Thread 2: 3
Thread 1: 3
Thread 2: 4
Thread 1: 4
Thread 2: 5
Thread 1: 5
Thread 2: 6
Thread 1: 6
Thread 2: 7
Thread 1: 7
Thread 1: 8
Thread 1: 9
Thread 2: 8
Thread 2: 9

위 코드에서 Runnable 인터페이스를 구현하는 task 객체를 람다식으로 생성합니다. 

 

이 객체를 이용하여 두 개의 스레드(thread1과 thread2)를 생성합니다. 

 

각 스레드는 task 객체를 실행하여 for문을 실행하고, 0부터 9까지의 값을 출력합니다. 

 

실행 결과는 실행할 때마다 다를 수 있습니다. 

 

스레드에 대해서는 뒤에서 더 자세히 다뤄볼 예정입니다.

반응형

'Java' 카테고리의 다른 글

Java[스트림(Stream)]  (0) 2023.03.29
Java[스레드(Thread)]  (0) 2023.03.29
Java[Iterator]  (0) 2023.03.29
Java[HashMap]  (0) 2023.03.29
Java[HashSet]  (0) 2023.03.28