[국비학원 기록/자바] 람다식, 스트림
my code archive
article thumbnail
반응형

1. 프로그래밍 방법론

 

1)절차식 프로그래밍

  -순차적인 명령을 수행하고 간단한 분기만 가능

2)구조적 프로그래밍

  -특정 변수를 묶어 구조화하고 이를 통해 프로그래밍 효율 높임.

3)객체지향 프로그래밍

  -객체를 기반으로 프로그래밍되며 클래스,속성,기능 등의 현실 세계 모델을 반영함.

4)함수형 프로그래밍

  -객체의 형태를 벗어나 함수형을 확장해 함수를 변수처럼 사용 가능.

 

함수형 프로그래밍과 람다식(Lamda expression)

2. 람다식

 

1)자바는 OOP : 기능을 수행하기 위해서는 객체를 만들고

                     그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드 구현 필요.

2)자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라고 한다.

3)함수의 구현과 호출만으로 프로그래밍이 수행되는 방식.

4)객체 지향 프로그래밍보다 효율적인 경우

  -대용량 데이터 처리 시에 유리

  =>데이터 포장 객체를 생성 후 처리하는 것보다, 데이터를 바로 처리하는 것이 속도 면에서 유리.

  =>멀티코어 CPU에서 데이터를 병렬 처리하고 취합할 때 객체보다는 함수가 유리.

  -이벤트 지향 프로그래밍에 적합.(이벤트가 발생하면 핸들러 함수 실행)

5)현대적 프로그래밍 = 객체지향 프로그래밍 + 함수적 프로그래밍

6)람다 계산법에서 사용된 식을 프로그래밍 언어에 접목.

7)익명 함수(anonymous function)을 생성하기 위한 식.

8)람다식=>매개변수를 가진 코드 블록.

9)함수를 기반으로 하는 프로그래밍이고 입력받는 자료 이외에 외부 자료를 사용하지 않아

  여러 자료가 동시에 수행되는 병렬 처리 가능.

10)함수형 프로그래밍은 함수의 기능이 자료에 독립적임을 보장함.

   동일한 자료에 대해 동일한 결과를 보장함.

 

3. 람다식 문법

1)익명 함수 만들기
2) (매개변수) -> {실행문;}     <==매개변수와 매개변수를 이용한 실행문

 

4. 함수형 인터페이스 선언하기

 

1)람다식을 선언하기 위한 인터페이스

2)익명 함수와 매개변수만으로 구현되므로 인터페이스는 단 하나의 메서드만을 선언해야 함.

3)@FunctionalInterface 애노테이션

익명 함수와 매개변수만으로 구현되므로 인터페이스는 단 하나의 메서드만을 선언해야 함.

매개변수가 2개이면 () 생략 불가능.
구현부가 1줄이면 {} 생략 가능.

 

스트림(Stream)

1. 스트림 의미

 

1)데이터 집합체를 반복적으로 처리

2)스트림을 이용하면 다수의 스레드 코드를 구현하지 않아도 데이터를 병렬로 처리

3)스트림은 스트림 데이터와 스트림 연산의 개념을 모두 포함.

 

2. 컬렉션과 스트림

                               컬렉션                      스트림
1)처리방식                다운로드                   스트리밍
2)저장공간                   필요                        불필요
3)반복방식                 외부반복                   내부반복
4)코드구현                  명령형                       선언형
5)원본데이터                 변경                 변경하지 않고 소비
6)연산병렬화                어려움                        쉬움

 

3. 스트림 특징

 

1)자료의 대상과 관계없이 동일한 연산을 수행
     배열,컬렉션을 대상으로 연산을 수행함

2)한 번 생성하고 사용한 스트림은 재사용할 수 없음.
     자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨.
     다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함.
3)스트림 연산은 기존 자료를 변경하지 않음.
4)스트림 연산은 중간 연산과 최종 연산으로 구분됨.(스트림 파이프 라인)
   스트림에 대해 중간 연산은 여러 개의 연산이 적용될 수 있지만
   최종 연산은 마지막에 한 번만 적용됨.


5)최종 연산이 호출되어야 중간 연산에 대한 수행이 이루어지고 그 결과가 만들어짐.

 

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형