Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CrudRepository update
- spring mapper annotation
- Data Annotation
- spring JPA DB Connection
- spring mapper
- Transactions Propagation Option
- JPA DB Connection 다중
- vueslot
- 도커 로그 확인
- spring repository
- mapper annotationo
- 도커 logs
- 도커 컨테이너 로그
- spring @mapper
- vuecomponent
- JpaRepository update
- repository annotation
- Vue
- @Builder @NoArgsConstructor
- Spring
- doker logs tail
- spring JPA DB multi Connection
- 자바버그수정
- AllArgsConstructor
- Spring JPA Specification
- NoArgsConstructor
- JPA DB 다중 Connection
- docker 로그
- JAVA Exception 종류
- spring DB Connection
Archives
- Today
- Total
개발을 잘하고 싶은 개발자
[Java] 스트림 Stream 본문
참고 https://futurecreator.github.io/2018/08/26/java-8-streams/
오늘은 스트림 중 배열과 컬렉션 스트림에 대해 정리해 본다
스트림 Streams 란?
자바 8에서 추가한 스트림(Streams)은 람다를 활용할 수 있는 기술 중 하나입니다. 자바 8 이전에는 배열 또는 컬렉션 인스턴스를 다루는 방법은 for 또는 foreach 문을 돌면서 요소 하나씩을 꺼내서 다루는 방법이었습니다. 간단한 경우라면 상관없지만 로직이 복잡해질수록 코드의 양이 많아져 여러 로직이 섞이게 되고, 메소드를 나눌 경우 루프를 여러 번 도는 경우가 발생합니다.
스트림은 '데이터의 흐름’입니다. 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있습니다. 또한 람다를 이용해서 코드의 양을 줄이고 간결하게 표현할 수 있습니다. 즉, 배열과 컬렉션을 함수형으로 처리할 수 있습니다.
또 하나의 장점은 간단하게 병렬처리(multi-threading)가 가능하다는 점입니다.
하나의 작업을 둘 이상의 작업으로 잘게 나눠서 동시에 진행하는 것을 병렬 처리(parallel processing)라고 합니다.
즉 쓰레드를 이용해 많은 요소들을 빠르게 처리할 수 있습니다.
1. 배열 스트림
스트림을 이용하기 위해서는 먼저 생성을 해야 한다. 스트림은 배열 또는 컬렉션 인스턴스를 이용해서 생성할 수 있다.
배열은 다음과 같이 Arrays.stream 메소드를 사용한다.
String[] arr = new String[]{"a", "b", "c"};
Stream<String> stream = Arrays.stream(arr);
Stream<String> streamOfArrayPart = Arrays.stream(arr, 1, 3);
2. 컬렉션 스트림
컬렉션 타입(Collection, List, Set)의 경우 인터페이스에 추가된 디폴트 메소드 stream 을 이용해서 스트림을 만들 수 있다.
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
Stream<String> parallelStream = list.parallelStream();

'Backend > Java' 카테고리의 다른 글
[Java] 이런 에러를 만났다면? There is no READABLE property named '_____' in class (0) | 2023.12.28 |
---|---|
[Lombok] @Builder와 @NoArgsConstructor 같이 사용하기 (0) | 2021.08.16 |
[Java] 널리 재사용되는 예외들 JAVA Exception 종류 (0) | 2021.08.12 |
[Java] 끝판왕 @Data 를 아시나요? (0) | 2021.08.10 |
[Java] @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 정리 (0) | 2021.08.10 |