ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java: 람다와 스트림의 기본적인 이해와 사용법 - 1
    각종 학습 요약/Java 2022. 5. 19. 12:19

    Java: 람다(lambda)와 스트림(Stream)의 기본적인 이해와 사용법 - 1

    람다에 대한 깊은 이해를 제공하는 글은 이미 많은 것 같다.
    이 글은 람다를 몰랐던 사람이 람다로 익명함수를 즉시 사용해볼 수 있도록 방법을 소개하고, 사용하기 위한 아주 기본적인 이해를 위한 글이다.

    람다 사용 한 줄 요약


    메서드 시그니처에서 파라미터만 남기고, 화살표를 넣자. 리턴도 생략 가능. (경우에 따라 더 줄이는 것도 가능)

    변경 예시1: public void run(int x) { System.out.println(x); } => (x) -> { sout(x); }
    변경 예시2: public int function(int x) { return x + 10; } => (x) -> { x + 10; }

    그렇다고 아무곳에서나 람다코드를 넣고 돌아가길 바라면 안되겠지. 어디서 어떻게 쓰면 좋을지 이해를 쌓아보자.

    람다와 스트림의 기본적인 이해


    1. 어노테이션@은 컴파일러에게 (어노테이션이 붙은)코드를 미리 확인해달라고 요청하는 표시다. 컴파일러를 위한 주석이라고 생각하자.

    2. 람다식은 익명 객체의 익명 함수를 생성해서 사용하는 것이다. 익명객체의 타입은 @FunctionalInterface라는 애노테이션이 선언된 인터페이스로 정의된다. 해당 인터페이스는 단 하나의 추상메서드를 가진 인터페이스다.
      무슨 소린지 모르겠어도 괜찮다. 이해해야만 당장 쓸 수 있는 부분은 아니다. 눈에만 익혀두자.

    3. 람다식은 식이다. 결과값이 튀어나온단 말이다. 근데 어디다가 담지? 어떻게 처리하지? 펑셔널인터페이스에 담아도 되지만, 거의 Stream과 함께 쓰라고 만들어진 느낌이다. Stream이 제공하는 요소 처리 메서드는 펑셔널인터페이스의 파라미터와 일치한다.
      무슨 소린지 모르겠다면, 거의 대부분의 람다식은 Stream이 제공하는 메서드 안에서 쓰면 된다는 말만 기억하고 넘어가자.

    4. Stream과 함께 사용하니, 병렬처리가 손쉽다. Stream의 parallel() 메서드로 병렬 스트림을 사용할 수 있다.

    5. Stream은 컬렉션의 요소에 대해 중간 처리(매핑, 필터링, 정렬)와 최종 연산(반복, 카운팅, 평균, 총합 등의 집계)을 동시에 기술할 수 있도록 한다.
      예를 들면 코드 한 줄로 타입변환하고 정렬한 다음에 반복하며 짝수만 출력하는, 그런게 가능하다는 말이다.
      '파이프라인'이라는 키워드만 미리 알아두자.


    스트림을 정리하다 보니 텍스트가 너무 많아져서 한번 끊는다.
    잠깐 머리를 식히고 스트림 사용법으로 넘어가보자!

    댓글

Designed by Tistory.