JAVA - Lambda

김수연·2022년 11월 7일
0

JAVA

목록 보기
4/5

JAVA - Lambda

람다,
함수를 하나의 식(Expression)으로 나타낸 것

  • 식으로 나타내는 것이기 때문에 따로 이름이 필요 없는
  • 익명 함수(Anonymous Function)이며,
  • 변수처럼 사용 가능
  • 변수처럼 사용 가능하니 당연히 매개 변수로 전달도 가능!

람다식의 기본 형태 : ( 매개 변수 ) -> { 함수 식; }

ex) (int a) -> { System.out.println(a); }

매개변수 자료형이 코드 내에서 유추 가능하고 함수 식도 하나면 자료형, return 키워드를 생략가능
심지어, 각각 하나씩이라고 보장되면 괄호들도 제거가능

(int a) -> { System.out.println(a); }
==
a -> System.out.println(a);

람다를 사용하려면 함수형 인터페이스를 사용해야 한다!

함수형 인터페이스란?

  • 멤버 메소드를 단 하나만 가지고 있어 함수처럼 사용할 수 있는 인터페이스

@FunctionalInterface 어노테이션을 인터페이스 위에 적어주면 해당 인터페이스는 멤버로 함수 하나만을 가질 수 있게 강제된다!

람다 Example

  • 함수형 인터페이스에 있는 멤버 메소드를 람다식으로 오버라이딩하고 원하는 결과를 출력하는 함수로 사용한 예제

    람다식의 가장 큰 장점이 바로 오버라이딩을 아주 쉽게 할 수 있다는 점!!

컬렉션인 List에 담긴 문자열들을 사전순의 역순으로 정렬하는 프로그램

Comparator 클래스의 compare 메소드를 오버라이딩해서 원하는 정렬법으로 정렬할 수 있다.
-> 코드가 너무 복잡!!!

<LambdaWithCollection 코드 변경>

람다사용 시

  • 메소드 오버라이딩이 간편해진다!
  • 다형성의 효율을 극대화할 수 있다!

더 짧게 메소드 참조 표현식(::)을 사용하면 코드는 줄이고 람다와 완전히 같은 동작한다.

(인스턴스의 자료형)::(메소드)
Collections.sort(myList,String::compareTo);

profile
Su Yeon

0개의 댓글