일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 자율학습
- Access Modifier
- cluster index
- java
- Wildcard
- 티스토리챌린지
- 혼공
- HashMap
- Lazy loading
- dotnet
- types
- Interface
- Functional Interfaces
- 인프런
- noncluster index
- 혼공학습단
- 0 시작
- 오블완
- 혼공컴운
- literal
- 인터페이스
- Spring Data JPA
- entrySet
- Proxy Object
- 네트워크
- 스프링 부트 3
- 접근 제어자
- 혼공자바
- 접근제어자
- 나도코딩
- Today
- Total
지금을 사는 사람
[Java] 람다 표현식(Lambda) 본문
소개:
Java 8부터 도입된 람다 표현식은 함수형 프로그래밍 스타일을 도입하여 Java 코드를 간결하게 만들고, 컬렉션을 처리하거나 다양한 인터페이스를 구현하는 데 효율적인 방법을 제공합니다. 이 글에서는 Java의 람다 표현식에 대해 알아보고, 간단한 예시를 통해 어떻게 사용되는지 살펴보겠습니다.
1. 람다 표현식이란?
람다 표현식은 익명 함수를 나타내며, 메서드를 하나의 식으로 표현할 수 있는 간결한 방법을 제공합니다. 주로 함수형 인터페이스를 구현할 때 사용되며, 다음은 기본적인 형태입니다.
(parameter) -> expression
2. 간단한 문법
- 매개변수가 없는 경우:
() -> System.out.println("Hello, Lambda!");
- 하나의 매개변수가 있는 경우:
(name) -> System.out.println("Hello, " + name);
- 여러 매개변수가 있는 경우:
(x, y) -> {
int sum = x + y;
System.out.println("Sum: " + sum);
};
3. 함수형 인터페이스와의 관계
람다 표현식은 함수형 인터페이스를 구현할 때 주로 사용됩니다. 함수형 인터페이스는 하나의 추상 메서드만을 가지는 인터페이스를 말합니다. 예를 들어, Runnable
, Callable
, Comparator
등이 함수형 인터페이스의 예시입니다.
4. 컬렉션의 간편한 처리
람다 표현식은 컬렉션을 간편하게 처리할 수 있는 기능을 제공합니다. 예를 들어, 리스트의 각 요소에 대해 특정 연산을 수행하고 싶은 경우:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(n -> System.out.println(n * 2));
5. 함수형 인터페이스 활용
Java에서는 많은 함수형 인터페이스가 이미 정의되어 있습니다. 그 중 몇 가지를 사용하는 예제를 보겠습니다.
Predicate
인터페이스: 조건을 검사하는 데 사용됩니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.removeIf(n -> n % 2 == 0);
Function
인터페이스: 값을 변환하는 데 사용됩니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.replaceAll(n -> n * 2);
6. 결론
람다 표현식은 Java의 세련된 기능 중 하나로, 코드의 가독성을 높이고 작성하는 데에 편의성을 제공합니다. 특히 컬렉션 처리나 함수형 인터페이스의 구현에서 람다 표현식은 코드를 간결하게 만들어주는 강력한 기능입니다. 함수형 프로그래밍 스타일에 익숙해지면 Java 개발에서 람다 표현식을 적극적으로 활용할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] 컬렉션 (Collection) (1) | 2023.12.12 |
---|---|
[Java] 리터럴 풀 (literal pool) (0) | 2023.12.12 |
[Java] 익명 클래스(Anonymous Class) (1) | 2023.12.07 |
[Java] nextLine()과 next()의 차이와 주의사항 (1) | 2023.12.06 |
[Java] 배열 (0) | 2023.12.06 |