본문 바로가기

Programming/Java

Lambda

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