- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 에러핸들링
- mongodb
- Docker
- 면접을 위한 cs 전공지식 노트
- 리팩터링 2판
- 코어 자바스크립트
- Refactoring
- MariaDB
- CRUD
- 코딩테스트
- java
- sql
- 프로그래머스
- Err-Handling
- Git
- CSS
- TWIL
- TIL
- 배포
- typescript
- LEVEL 1
- javascript
- 알고리즘
- react
- 오늘도 개발자가 안된다고 말했다
- LEVEL 2
- 아고라스테이츠
- LEVEL1
- TMIL
- First Project
성장에 목마른 코린이
[Java8] 스트림과 컬렉션의 차이 본문
기존 루프문 처리의 문제점
기존 Java에서 컬렉션 데이터를 처리할때는 for, foreach 루프문을 사용하면서 컬렉션 내의 요소들을 하나씩 다루었습니다.
가단한 처리나 컬렉션의 킉가 작으면 큰 문제가 아니지만 복잡한 처리가 필요하거나 컬렉션의 크기가 커지면,
루프문의 사용은 성능저하를 일으키게 되었습니다.
스트림의 등장
스트림은 Java8에서 추가된 기능으로 컬렉션 데이터를 선언형으로 쉽게 처리할 수 있습니다.
복잡한 루프문을 사용하지 않아도 되며, 루프문을 중첩해서 사용해야 되는 최악의 경우도 더이상 없어졌습니다.
또한 스트림은 병렬처리(Multi thread)를 별도의 멀티 스레드 구현없이도 쉽게 구현할 수 있습니다.
스트림과 컬렉션의 차이
1. 데이터 계산 시점
컬렉션: 모든 요소는 컬렉션에 추가하기전에 계산되어야 합니다.
스트림: 요청할때만 요소를 계산하는 고정된 자료구조
사용자가 요청하는 값만 추출할수 있는 특성때문에 스트림은 컬렉션보다 프로그래밍에 장점이 있습니다.
2. 반복의 일회성
컬렉션: 같은 소스에 대하여 여러번 반복 처리를 할 수 있습니다.
스트림: 소비의 개념을 쓰기 때문에 한번 소비한 요소에 대해 접근 할 수 없어 단 한번만 반복문을 처리할 수 있습니다.
3. 외부반복, 내부반복
컬렉션: foreach 문법을 사용해 사용자가 반복문을 직접 명시해햐하는데 이를 외부반복이라고 합니다.
스트림: 라이브러리를 사용하는 내부반복개념입니다.
스트림 연산
스트림 연산들은 크게 중간연산, 최종연산으로 구분할 수 있습니다.
중요한 특징은 최종연산을 실행하기 전까지는 아무 연산도 수행하지 않는다는 것 입니다.
- 중간연산: filter나 map같은 중간 연산은 다른 스트림을 반환하기에 여러개의 중간연산을 연결해 질의를 만들 수 있습니다.
- 최종연산: 파이프라인 연산의 결과를 출력합니다. List, Integer, void 등 다양한 형태로 출력할 수 있습니다.
스트림 이용하기 요약
1. 질의를 수행할 데이터소스 (ex. 컬렉션)
2. 스트림 파이프라인을 구성할 중간연산
3. 스트림 연산을 실행하고 결과로 출력할 최종연산
'Java' 카테고리의 다른 글
[Java] 배열 관련 기본 내장 함수 (0) | 2022.10.21 |
---|---|
[Java] 원시자료형의 명칭과 크기 (0) | 2022.10.21 |
[Java] String 관련 기본 내장 함수 (0) | 2022.10.21 |
[Java] 자료구조 Collection과 Map (0) | 2022.10.21 |
[Java] InetAddress 클래스 (0) | 2022.10.21 |