-
[Java] Java에서 람다식으로 코딩을 하면?IT/개발 기록 2018. 11. 25. 18:07
Java에서 람다식으로 코딩을 하면?
람다식이란?
- 람다식, 또는 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어
- Java에서는 8버전부터 지원
장점
1. 코드의 간결성 - 효율적인 람다 함수의 사용을 통하여 불필요한 루프문의 삭제가 가능하며, 동일한 함수를 재활용할 수 있는 여지가 커진다.
2. 필요한 정보만을 사용하는 방식을 통한 퍼포먼스 향상 - 지연 연산을 지원하는 방식을 통하여 효율적인 퍼포먼스를 기대할 수 있다. 이 경우 메모리 상의 효율성 및 불필요한 연산의 배제가 가능하다는 장점이 있다.
단점
1. 어떤 방법으로 작성해도 모든 원소를 전부 순회하는 경우는 람다식이 조금 느릴 수 밖에 없다. (어떤 방법으로 만들어도 최종 출력되는 bytecode 나 어셈블리 코드는 단순 while(혹은 for) 문 보다 몇 단계를 더 거치게 된다.)
2. 익명함수의 특성상 함수 외부의 캡처를 위해 캡처를 하는 시간제약 논리제약적인 요소도 고려해야 하며, 디버깅 시 함수 콜스택 추적이 극도로 어렵다.
3. 람다식을 너무 남발하여 사용하게되면 오히려 코드를 이해하기 어려울 수 도 있다.
(출저 : https://namu.wiki/w/%EB%9E%8C%EB%8B%A4%EC%8B%9D)
예제
1.
기존 표현
123for (int i = 0; i < 10; i++) {System.out.println(i);}cs 람다식 표현
1IntStream.range(0, 10).forEach((int value) -> System.out.println(value));cs 2.
기존표현
1234int sum;int[] arr = {1,2,3,4,5};sum = Arrays.stream(arr).sum();System.out.println("합 : " + sum);cs 람다식 표현
1234static int sum;List<Integer> list = Arrays.asList(1,2,3,4,5);list.stream().forEach((i) -> { sum += i;});System.out.println("합 : " + sum);cs 3. 람다식 예제 소스
깃허브에 포크해둔 소스
https://github.com/devJJo/java-8-lambdas-exercises
생각해 볼 부분
1. 지금 진행중인 프로젝트에서 람다식을 직접 활용할 수 있는 부분 찾아보기
2. 회사에서 진행중인 프로젝트에 기존표현이 아닌 람다식을 적용해서 코딩하면
내가 아닌 다른사람이 내가 짠 코드를 유지보수 할 때 람다식에 익숙치 않다면
불편할 것 같은 느낌...
3. 요즘 드는 생각은 끊임 없이 나오는 신기술들이 많은데 이 많은 신기술들을 언제 다 공부하지..?
라는 생각보단 필요에 의해 찾아 사용하는것이 좋을것 같다 라는 생각이든다.
단, 이런게 있다라는것 정도는 알고 있어야 한다.
생활코딩 강의에서도 느꼈지만, 내가 모르는걸 알고 있는 상태와 모르는걸 모르는 상태는
엄청 큰 차이가 있기 때문이다.
'IT > 개발 기록' 카테고리의 다른 글
[백준 알고리즘] 11718 그대로 출력하기 (JAVA) (0) 2019.01.09 Web Server와 WAS(Web Server Application) 차이 (0) 2018.11.30 [Spring] Junit을 사용하여 단위테스트(Spring-Test사용) (2) 2018.11.05 쿼리 결과값을 리턴받은 DTO를 가지고JSON구조 만드는 방법 (0) 2018.10.30 [RestApi] 서버개발하기 (Spring Legacy + myBatis + postgreSQL) (0) 2018.10.29 댓글