JAVA8 - Lambda란?


람다식(lambda expression)이란?


  • java 8부터 람다식이 추가되었다.
  • 표현 방식중 하나로 함수형 스타일이라고 할 수 있다.
  • 함수형 스타일은 함수의 입력만을 의존하며 출력을 만드는 구조로 외부에 상태를 변경하는 것을 지양하는 패러다임으로 부작용 발생을 최소화 하는 방법론이다.
  • 기존의 불필요한 코드를 줄이고 가독성을 향상시키는데 목적이 있다.


람다식의 장점

  1. 코드를 간결하게 구성할 수 있다.
    • 함수형 버전은 간결하다.
    • 개발자의 의도를 효과적으로 잘 전달한다.
  2. 오류를 줄일 수 있다.
    • 자바7에서는 변수를 명시적으로 변경하는 경우가 많지만 함수형 코드에서는 명시적인 변경이 없다.
  3. 원하는 부분을 병렬화 하기 쉽다.
    • 병렬화를 구현하기는 매우 어렵다. 태스크를 다중 스레드로 나누고, 결과를 모은 뒤 순차적으로 옮겨야 한다. 또한 다른 스레드가 데이터를 업데이트 하는 동안에 스레드간의 충돌이 안되게 해야한다. 람다식을 이용하면 간단하게 메소드를 변경하는 것만으로도 구현할 수 있다.


예제

names라는 리스트에서 이름이 ‘s’로 시작하는 사람의 수 구하기

기존 JAVA코드

    final List<String> names = Arrays.asList("yunjae", "yeji", "minsu", 
				"sungmoon", "jinho", "haneul");
		
    int count = 0;
    for(String name : names) {
    	if(name.startsWith("s")) {
    		count += 1;
    	}
    }
		
    System.out.println("이름이 s로 시작하는 사람 수 " + count);
		
		
}

출력 결과

producer


람다식(함수형)

    final List<String> names = Arrays.asList("yunjae", "yeji", "minsu", 
				"sungmoon", "jinho", "haneul");
		
    System.out.println("이름이 s로 시작하는 사람 수 " + names.stream()
		.filter(name -> name.startsWith("s")).count());

출력 결과

producer

* 명령형, 함수형 스타일을 비교하면 소스가 훨씬 간결하다는 것을 볼 수 있다.



이윤재

이윤재
주니어 개발자 이윤재입니다. 공부한 내용을 바탕으로 기술하는 블로그 입니다.

JAVA8 - Lambda - stream api

Java8 lambda stream에 대하여 Continue reading

NoSQL과 RDBMS의 장단점

Published on June 22, 2019

CAP 이론

Published on June 22, 2019