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
- webflux
- GC
- try-with-resources
- intelij
- resilience4j
- java
- try-catch-finally
- AutoCloseable
- Kotlin
- n+1
- Hotspot VM
- 동작방식
- zipWith
- execution engine
- 람다표현식
- wagon-ssh
- Class Loader
- springboot
- closeable
- jvm
- Runtime data area
- jetbrain
- tcp
- feign
- try-catch
- 4-way-handshake
- 코딩테스트
- optional
- 날짜쿼리
- circuitbreaker
Archives
- Today
- Total
JuBin's personal study blog
자바1.8 Stream API 정리 본문
반응형
InputStream, OutputStream이랑은 완전 다른 Stream개념.
컬렉션, 배열에서 쓰임.
코드의 가독성이 좋아진다.
기본문법
Collections, 배열과 같은 객체.스트림생성().중개연산().최종연산;
ex)
List<String> names = Arrays.asList("jeong", "pro", "jdk", "java");
long count = 0;
// names list중 "o"가 포함된 객체갯수 count
count = names.stream().filter(x -> x.contains("o")).count();
ex)
List<String> names = Arrays.asList("jeong", "pro", "jdk", "java");
//이러면 a에는 jeong, pro 2개가 들어있다.
Stream<String> a = names.stream().filter(x -> x.contains("o"));
중개연산 종류
Filter, Map, Peek, Sorted, Limit, Distinct, Skip, MapToInt, MapToLong, MapToDouble
최종연산 종류
count(), min(), max(), sum(), reduce, forEach, collect, iterator, noneMatch, anyMatch, allMatch
• Stream은 재사용이 불가능
ex)
Stream<String> a = names.stream().filter(x -> x.contains("o"));
long count = a.count();
List<String> lists = a.collect(Collectors.toList()); // 불가능
• 병렬 스트림(parallelStream())은 여러 쓰레드가 작업한다.
ex)
names.parallelStream().filter(x -> x.contains("o")).count();
>> 여러쓰레드가 처리해줘서 항상 성능면에서 유리해보일수 있지만 애플리케이션에서 사용하는 쓰레드가 많거나,
스트림의 요소 수가 많지 않다면 오히려 쓰레드를 사용하는데 드는 오버헤드가 더 클수있다.
• 중개연산은 미리하지 않는다. 지연연산을 한다.
ex)
Stream<String> a = names.stream().filter(x -> x.contains("o")).map(x-> x.concat("s"));
a.forEach(x -> System.out.println(x));
>> 위와 같은 코드가 있으면 filter와 map 함수는 미리 계산하고 있지 않고 있다가 forEach와 같은 최종연산이 적용될때
중개 연산도 실행된다.
반응형
'JAVA' 카테고리의 다른 글
[Java] ObjectMapper란 (0) | 2020.12.23 |
---|---|
[JVM] JVM의 Memory영역 ( Stack & Heap&Static ) (0) | 2020.11.10 |
서버 기반 인증 -> token 기반 인증 (0) | 2020.10.31 |
[JAVA 8] 자바1.8 Optional이란? (0) | 2020.09.20 |
JAVA 8 람다식이란? (0) | 2020.09.20 |