Lamda & Stream

yshjft·2023년 1월 2일
0

Java, OOP

목록 보기
22/27

Lamda Expression(람다식, 익명 함수)

Lamda expression (람다식, 익명 함수)

  • 메서드를 하나의 식으로 표현하는 것
  • 간결한 인터페이스 인스턴스 생성 방식
    • 함수형 인터페이스에서만 사용 가능하다.
  • 람다식 참고

Functional Interface(함수형 인터페이스)

Stream

  • 데이터 소스를 추상화하고 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓은 것

    • 데이터 소스를 추상화 == 데이터 소스의 종류와 상관 없이 동일한 방식으로 데이터를 처리할 수 있다.
    • 재사용성을 향상 시킴
  • 연산

    • 중간 연산
      • 계속적인 연산 가능
      • 필터링 : filter
      • 변환 : map
      • 정렬 : sorted
    • 최종 연산
      • 단 한번만 사용 가능
      • 출력 : foreach
      • 수집 : collect
    • 지연 연산
      • 중간 연산은 최종 연산이 수행되어야 수행된다.(최종 연산이 수행되어야 스트림의 요소들이 중간 연산을 거쳐 최종 연산에서 소모된다.)
  • 특징

    • immutable
      • 데이터 소스를 변경하지 않는다. 처리된 결과를 새로운 배열 또는 Collection에 담아 반환한다.
    • 일회용
      • 사용하고 나면 스트림이 닫혀 다시 사용할 수 없다.
    • 작업을 내부 반복으로 처리
      • 반복문을 메서드 내부에 숨길 수 있는 “내부 반복” 사용
      • 이 덕분에 작업이 간결하게 수행될 수 있다.
    • 데이터 소스의 요소를 기본형으로 처리하는 스트림 제공
      • IntStream, LongStream, DoubleStream
      • 오토박싱 & 언박싱으로 인한 비효율 줄일 수 있다.
    • 병렬 Stream
      기본적으로 스트림은 병렬로 처리하지 않는다.
      하지만 필요에 따라 parallel()이라는 메서드를 호출하여 병렬로 처리할 수 있다. 이를 통해 보다 쉽게 병렬 처리를 할 수 있도록 도와준다.
      IntStream.range(0, 10).parallel()
profile
꾸준히 나아가자 🐢

0개의 댓글