본문 바로가기
멀티캠퍼스/Spring

231025 (수)

by 세크레투스 2023. 10. 25.
반응형
SMALL

<데이터 스트림 기법>

람다, 스트림처리 기술이 필요함.

 

- 람다 기술 : 함수형 프로그래밍(함수를 데이터처럼 취급하자.) / 변수에 대입, 함수의 매개변수, 리턴값으로 처리. -> 결국엔 대입과 관련.

- 스트림 처리 : 

 

함수에 참조값을 대입하겠다.

 

자바에서의 문제점 : 함수의 개념이 아예 없음.

거기에 특화되어 설계단계부터 객체지향을 위한 언어로 만들어짐.

 

익명개체와 클래스를 접목시켜서 메소드 1개만 있는것으로 만듦.

타입 정의는 인터페이스로.

 

<람다 기술>

왼쪽 - 매개변수, 오른쪽 - 함수 본체 파트

- 매개변수 : 매개변수가 1개일 경우 괄호 생략 가능. 매개변수 2개 이상일때는 무조건 괄호 사용해야 함.

- 함수 본체 : 1줄짜리면 중괄호 생략 가능, 2줄 이상이면 중괄호가 필요함.

 

리턴 생략 가능.

 

- 타입 : 인터페이스로 1개 메서드로만 구성.

@FunctionalInterface

 

편의를 위해서 표준 함수 인터페이스를 제공하고 있음.

 

매개변수 없고, 리턴이 void인 것.

 

람다의 특징(주의사항)

- this 해석

- this 용도

 

매서드 참조

- Static Method : 클래스명::메서드명

- Instance Method :  인스턴스변수명::메서드명

- [this]::메서드명

 

생성자 참조

- 클래스명::new

 

매개변수가 없으면? : Cosumer

매개변수가 있으면? : Function

 

람다식 : 1줄자리 함수를 만들때 많이 쓰임.

 

<스트림 - Stream>

- I/O 처리

- 데이터 처리

- 배열, Collection과 관련이 많음.

소스 역할

 

1. 스트림이란?

- 자바 8부터 추가된 컬렉션(배열 포함)의 저장요소를 하나씩 참조

- 람다식 (함수적-스타일(functional-style))으로 처리할 수 있도록 해주는 반복자

 

2. 스트림의 특징

- Iterator와 비슷한 역할 하는 반복자

 

3. 람다식으로 요소 처리 코드 제공

- 대부분의 요소처리 메소드는 함수적 인터페이스 매개 타입

 

4. 내부 반복자 사용하므로 병렬 처리 쉬움

- 컬렉션 내부에서 요소들 반복시킴

- 개발자는 요소당 처리해야 할 코드만 제공

 

- 내부반복자 : 스트림

- 외부반복자 : 직접 순회

 

- 중간처리 : 가공작업

- 최종처리 : 1회

 

5. 스트림의 종류

- 자바 8부터 새로 추가

- java.util.stream 패키지에 스트림(stream) API 존재

6. 스트림 인터페이스의 구현 객체

- 주로 컬렉션과 배열에서 얻음

- 소스로부터 스트림 구현 객체 얻는 경우

<스트림 파이프라인>

1. 파이프라인

- 여러 개의 스트림이 연결되어 있는 구조

- 파이프라인에서 최종 처리를 제외하고는 모두 중간 처리 스트림

2. 중간 처리와 최종 처리

- Stream 인터페이스는 필터링, 매핑, 정렬 등의 많은 중간 처리 메소드 가짐

- 메소드들은 중간 처리된 스트림 리턴

- 스트림에서 다시 중간 처리 메소드 호출해 파이프라인 형성

- Ex) 회원들 중 남자 회원들의 나이 평균 구하기

- 스트림이 제공하는 중간 처리용 메소드 - 리턴 타입이 스트림

- 필터링 : 개수조정

- 매핑 : 타입변경

- 정렬 : 순서조정

- 루핑 : 디버깅 확인

 

* map(...)

* mapToDouble(...)

* mapToInt(...)

* mapToLong(...)

* mapToObj(...)

 

Casting

* asDoubleStream()

* asLongStream()

* boxed()

 

차원축소기능 -> split()을 사용하여 2차원을 1차원으로 변경

* flatMap(...)

* flatMapToDouble(...)

* flatMapToInt(...)

* flatMapToLong(...)

 

3. 중간 처리 메소드와 최종 처리 메소드

- 스트림이 제공하는 최종 처리용 메소드

* 리턴 타입이 기본 타입이거나 OptionalXXX

 

<필터링>

1. 필터링이란?

- 중간 처리 기능으로 요소를 걸러내는 역할

- 필터링 메소드인 distinct()와 filter() apthem

- 모든 스트림이 가지고 있는 공통 메소드

2. distinct() 메소드 - 중복을 제거하는 기능

- Stream의 경우 Object.equals(Object)가 true

 

3. filter() 메소드

- 매개값으로 주어진 Predicate가 true를 리턴하는 요소만 필터링

 

<매핑(mapping)>

1. 매핑(mapping)

- 중간 처리 기능으로 스트림의 요소를 다른 요소로 대체하는 작업

2. flatMapXXX() 메소드

- 요소를 대체하는 복수 개의 요소들로 구성된 새로운 스트림 리턴

3. mapXXX() 메소드

- 요소를 

- 객체, 실수, 정수, long

 

3. asDoubleStream(), asLongStream(), boxed() 메소드

<스트림의 종류>

1. 스트림 인터페이스의 구현 객체

- 주로 컬렉션

 

반응형
LIST

'멀티캠퍼스 > Spring' 카테고리의 다른 글

231020 (금) Weka  (0) 2023.10.20
231019(목) - MongoDB  (0) 2023.10.20
231013 (금) NoSQL - MongoDB  (0) 2023.10.16
231012 (목) NoSQL - MongoDB  (0) 2023.10.13
검색 알고리즘  (0) 2023.10.12