java se 8 에서 람다식 사용하기 - 기초
람다 표현식에 관심을 둬야하는 몇가지 이유는 다음과 같다.
- OOP 언어인 Java에서 함수형 코드를 작성할 수 있게 해준다.
- 람다 표현식을 이용함으로써 간결하고 명확한 코드로 그 의도를 표현할 수 있다.
- Collection filtering, Iteration , Extraction 등에서 놀라운 코드 생산성을 보인다.
아주 아주 기본적인 람다 표현식에 대해 익혀보자.
Syntax
[code javascript](argument) -> (body)[/code]
0개 이상의 인자를 실행하고자 하는 함수 body 로 전달한다는 의미이며, 이는 람다 표현식의 일반적인 구문이다.
예를 들면 다음과 같이 표현된다.
[code javascript](int a, int b) -> a*b
(Person p) -> { return p.getAge();}[/code]
다음 코드는 swing 에서 자주 보이는 이벤트 핸들러를 람다로 변경하는 코드이다.
[code java]btnOk.setOnAction( newEventHandler() {
@Override
public voidhandle(ActionEvent e) { //버튼 action에 처리할 코드를 여기에 작성
}
});[/code]
위 코드를 람다 표현식으로 변경하면 다음과 같다.
[code javascript]btnOk.setOnAction( e -> { //버튼 action에 처리할 코드를 여기에 작성
});[/code]
표현식의 또 다른 예로 익명 클래스는 다음과 같이 작성할 수 있다.
[code java]new Thread(
() -> System.out.println("This is a seperate thread")
).start();[/code]
마지막으로 collection을 다루는 예제만 더 보고 끝내자.
[code java]ArrayList arrayList= new ArrayList<>();
for(int i=1; i<=100; i++)
arrayList.add(i);
//일반적인 for-loop 문
for(Integer i: arrayList)
{ System.out.println(i);
}
//lambda식으로 표현한 for-loop문
arrayList.forEach( i -> {System.out.println(i);});[/code]
이상으로 람다 표현식이 어떻게 코드 수를 줄이고 Java와 함수형 언어 사이의 갭을 매워주는지에 대해 간략히 알아보았다.