Lambda
자바8에 람다가 도입되었다. C#같은 언어에는 이미 있는 기능이었지만 자바에는 이번 버전에 처음 등장하였다.
람다의 장점
- 간결하고 명확한 코드로 그 의도를 표현
- 높은 코드생산성
일반적인 사용법은 다음 같다.
(args) - > { sentence }
예)
일반 메서드 : public int add(int a, int b) { return a+b; }
람다 : (int a, int b) -> { a+b; }
사실 이 예시로는 뭐가 장점이지? 라는 생각을 하게 된다.
하지만 이번에 Java에서 Lambda 와 함께 발표한 Stream 인터페이스를 같이 사용하면 조금은 아~ 이래서 라는것을 알게 될것이다.
다음은 필터링, 정렬을 steam인터페이스와 Lambda로 구현한 것이다.
public ArrayList<String> findByName(String name) {
ArrayList<Student> student = repository.findAll();
return student.stream()
.filter(s -> name.equals(s.getName()))
.sorted(Comparator.comparing(s -> s.getAge()))
.collect(Collectors.toList());
}
(Stream은 어째 닷넷에 LinQ와 비슷한 감을 느낀다.)
저렇게 람다를 사용하기 위해서는 알아야 할 것은 "인터페이스"다.
자바는 기존의 인터페이스를 람다를 효율적으로 사용할 수 있다.
하나의 인터페이스를 만든다 .
(여기서 중요한 점은 하나의 추상 메서드만 가지는 인터페이스이어야 한다.)
public InterFace Lambo{
public void shooting();
}
다음과 같이 사용 할 수 있다.
Lambo lambo = () -> sysout("총을 쏘았다.");
'Programming > Java' 카테고리의 다른 글
JVM(JavaVirtualMachine) (0) | 2016.08.08 |
---|---|
Generics (0) | 2016.06.16 |
HashMap VS HashTable VS ConcurrentHashMap (0) | 2016.05.21 |