함수형 스타일은 함수의 입력만을 의존하며 출력을 만드는 구조로 외부에 상태를 변경하는 것을 지양하는 패러다임으로 부작용 발생을 최소화 하는 방법론이다.
기존의 불필요한 코드를 줄이고 가독성을 향상시키는데 목적이 있다.
람다식의 장점
코드를 간결하게 구성할 수 있다.
함수형 버전은 간결하다.
개발자의 의도를 효과적으로 잘 전달한다.
오류를 줄일 수 있다.
자바7에서는 변수를 명시적으로 변경하는 경우가 많지만 함수형 코드에서는 명시적인 변경이 없다.
원하는 부분을 병렬화 하기 쉽다.
병렬화를 구현하기는 매우 어렵다. 태스크를 다중 스레드로 나누고, 결과를 모은 뒤 순차적으로 옮겨야 한다. 또한 다른 스레드가 데이터를 업데이트 하는 동안에 스레드간의 충돌이 안되게 해야한다. 람다식을 이용하면 간단하게 메소드를 변경하는 것만으로도 구현할 수 있다.
예제
names라는 리스트에서 이름이 ‘s’로 시작하는 사람의 수 구하기
기존 JAVA코드
finalList<String>names=Arrays.asList("yunjae","yeji","minsu","sungmoon","jinho","haneul");intcount=0;for(Stringname:names){if(name.startsWith("s")){count+=1;}}System.out.println("이름이 s로 시작하는 사람 수 "+count);}
출력 결과
람다식(함수형)
finalList<String>names=Arrays.asList("yunjae","yeji","minsu","sungmoon","jinho","haneul");System.out.println("이름이 s로 시작하는 사람 수 "+names.stream().filter(name->name.startsWith("s")).count());