«   2024/11   »
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 29 30
Archives
Today
Total
11-11 05:43
관리 메뉴

DevTzu

[Java] 자바 람다식 코딩이란? 장단점 / 사용법 / 기초 / 예제 / Lambda Expressions 본문

study

[Java] 자바 람다식 코딩이란? 장단점 / 사용법 / 기초 / 예제 / Lambda Expressions

DevTzu 2022. 10. 21. 12:00
반응형

자바 람다식 Java Lambda Expressions

람다식이란?
람다식, 또는 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(匿名函數, Anonymous functions)를 지칭하는 용어이다. 실무적으로는 코드를 간결하게 만들고, 지연 연산으로 성능을 높이고, 반복 관련 코드의 불필요한 부분들을 제거할 수 있으므로 중요하다. 람다식은 주로 고차 함수에 인자(argument)로 전달되거나 고차 함수가 돌려주는 결과값으로 쓰인다. 필요한 적재적소에 람다식을 투입하는 프로그래머는 효율과 결과 모두를 가져오는 훌륭한 프로그래머라고 볼 수 있다.

 

 

 

장단점

- 장점

1. 코드의 간결성 - 불필요한 반복되는 코드 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.

2. 지연연산 수행 - 지연연상을 수행 함으로써 불필요한 연산을 최소화 할 수 있다.

3. 병렬처리 가능 - 멀티쓰레드를 활용하여 병렬처리를 할 수 있다.

 

- 단점

1. 람다식의 호출이 까다롭다.

2. 람다 stream 사용시 단순 for문 혹은 while문 사용 시 성능이 떨어질 수 있다.

3. 불필요하게 너무 사용하면 오히려 가독성이 떨어질 수 있다.

 

 

 

람다의 표현식

1. 매개변수 화살표 -> 함수몸체로 이용하여 사용 할 수 있다.

2. 함수몸체가 단일 실행문이면 괄호{} 를 생략 할 수 있다.

3. 함수몸체가 return문으로만 구성되어 있는 경우 괄호{} 를 생략 할 수 없다.

// 정상적인 유형
() -> {}
() -> 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

 

 

 

Java 람다식 예제

우선 기존의 전통적인 방법의 반복문이다.

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

 

람다식을 사용하여 만드는 반복문(Java 8부터 지원)

IntStream.range(0, 10).forEach((int value) -> System.out.println(value));

 

 

 

Stream API 란?

Stream이란 다양한 데이터를 표준화된 방법으로 다뤼 위한 라이브러리

stream() -> 스트림생성
filter -> 중간 연산 (스트림 변환) — 연속에서 수행 가능
count -> 최종 연산 (스트림 사용) — 마지막에 단 한 번만 사용 가능

 

- Stream의 특징

Stream은 데이터를 변경하지 않는다.
Stream은 1회용이다.
Stream은 지연 연산을 수행한다.
Stream은 병렬 실행이 가능하다.

 

 

Stream API 예제

// Stream API를 이용한 간단한 짝수 판별
IntStream.range(0, 10).filter(i-> i%2==0)
      .forEach(System.out::println);

- 실행결과

0
2
4
6
8

 

 

 

 

이상.

 

 

#자바 #java #람다식 #LambdaExpressions #장단점 #사용법 #예제 #익명함수 #Anonymousfunctions

반응형
Comments