SlideShare a Scribd company logo
스트림API 스터디
3일 - 박병선
지난 시간 정리
filter(), distinct(), limit(), skip()
- 게으르게 동작
map(), flatMap()
findXXX(), xxxMatch()
- Optional
reduce()
sorted()
List<Integer> list = Arrays.asList(6, 2, 7, 4, 3, 9, 1, 5, 8);
list.stream().sorted().forEach(System.out::println);
Stream<T> sorted(Comparator<? super T> var1);
list.stream().sorted((lhs, rhs) -> lhs.getScore() - rhs.getScore()).forEach(System.out::println);
sorted(Comparator.comparing(item -> item.getScore()))
sorted(comparing(Item::getScore))
sorted(comparing(Item::getScore).reversed())
sorted()
class Item {
private int score;
private String name;
}
// 생성자, getter, toString() 추가
List<Item> list = Arrays.asList(new Item(6, "air"), new Item(2, "baby"), new Item(7,
"car"), new Item(4, "data"), new Item(3, "egg"), new Item(6, "fan"));
- Comparator.thenComparing()
- score로 정렬, name으로 역정렬 해보세요
- 스트림API로만
sorted()
LSA는?
- Comparator의 하위포팅이 없다
- 앞에 해본건 쓸데가 없다
- Collections.reverseOrder(Comparator) 참고
숫자형 스트림
int calories = menu.stream().map(Dish::getCalories).reduce(0, Integer::sum);
int calories = menu.stream().map(Dish::getCalories).sum();
박싱 비용, 간결한 표기
Stream<T>에 sum()을 만들 수가 없다
기본형 특화 스트림 (primitive stream specialization)
숫자형 스트림
IntStream, LongStream, DoubleStream
int calories = menu.stream().mapToInt(Dish::getCalories).sum();
intStream.boxed()
OptionalInt
IntStream.rangeClose(1, 100); // [1, 100]
IntStream.range(1, 100); // (1, 100)
숫자형 스트림 실습
boolean isPrime(int number);
LSA로 풀어 보세요
컬렉터
지금까지 다룬 것은 중간 연산
- 한 스트림을 다른 스트림으로 변환
- 연산을 연결
- 스트림 파이프라인을 구성
- 소비하지는 않는다
최종 연산 collect
컬렉터
Map<Currency, List<Transaction>> transactionsByCurrencies =
transactions.stream().collect(groupingBy(Transaction::getCurrency));
toList()
List<T> list = stream.collect(Collectors.toList());
앞으로 Collectors는 정적 임포트한 것으로 가정
요약 연산
Comparator<Dish> dishCaloriesComparator =
Comparator.comparingInt(Dish::getCalories);
Optional<Dish> mostCalorieDish = menu.stream()
.collect(maxBy(dishCaloriesComparator));
minBy()
counting()
summingInt()
averagingInt()
summarizingInt()
문자열 연결
String shortMenu = menu.stream.map(Dish::getName).collect(joining());
shortMenu = menu.stream.map(Dish::getName).collect(joining(“, ”));
다음 시간에 봐요

More Related Content

What's hot

[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
S.O.P.T - Shout Our Passion Together
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째
Jaeseok Park
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
S.O.P.T - Shout Our Passion Together
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
Yoonwhan Lee
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
Terry Cho
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
S.O.P.T - Shout Our Passion Together
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
S.O.P.T - Shout Our Passion Together
 
5. queue
5. queue5. queue
5. queue
Geunhyung Kim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
S.O.P.T - Shout Our Passion Together
 
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자03주차 ddl- table을 만들자
03주차 ddl- table을 만들자
Yoonwhan Lee
 
[Swift] Data Structure - Array
[Swift] Data Structure - Array[Swift] Data Structure - Array
[Swift] Data Structure - Array
Bill Kim
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
seungdols
 

What's hot (12)

[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
 
5. queue
5. queue5. queue
5. queue
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
 
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자03주차 ddl- table을 만들자
03주차 ddl- table을 만들자
 
[Swift] Data Structure - Array
[Swift] Data Structure - Array[Swift] Data Structure - Array
[Swift] Data Structure - Array
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
 

Similar to 스트림Api 스터디 3일

스트림Api 스터디 2일
스트림Api 스터디   2일스트림Api 스터디   2일
스트림Api 스터디 2일
ByungSun Park
 
(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)
(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)
(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)
MIN SEOK KOO
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
JiandSon
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
Sungchul Park
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
JiandSon
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선daewon jeong
 
Functional programming
Functional programmingFunctional programming
Functional programming
ssuserdcfefa
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
Kenu, GwangNam Heo
 
하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2
Kwang Yul Seo
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
hungrok
 
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질
aceigy6322
 
스플렁크 머신러닝 연동
스플렁크 머신러닝 연동스플렁크 머신러닝 연동
스플렁크 머신러닝 연동
Seung-Woo Kang
 
스플렁크 Machine Learning Integration
스플렁크 Machine Learning Integration스플렁크 Machine Learning Integration
스플렁크 Machine Learning Integration
TIMEGATE
 

Similar to 스트림Api 스터디 3일 (13)

스트림Api 스터디 2일
스트림Api 스터디   2일스트림Api 스터디   2일
스트림Api 스터디 2일
 
(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)
(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)
(망작)이것이 자바다 Chap.16 스트림&병렬처리 Stream&parallel processing(java)
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 자바8 람다 나머지 이야기 (박성철)
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
 
하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2하스켈 프로그래밍 입문 2
하스켈 프로그래밍 입문 2
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질
 
스플렁크 머신러닝 연동
스플렁크 머신러닝 연동스플렁크 머신러닝 연동
스플렁크 머신러닝 연동
 
스플렁크 Machine Learning Integration
스플렁크 Machine Learning Integration스플렁크 Machine Learning Integration
스플렁크 Machine Learning Integration
 

스트림Api 스터디 3일

  • 2. 지난 시간 정리 filter(), distinct(), limit(), skip() - 게으르게 동작 map(), flatMap() findXXX(), xxxMatch() - Optional reduce()
  • 3. sorted() List<Integer> list = Arrays.asList(6, 2, 7, 4, 3, 9, 1, 5, 8); list.stream().sorted().forEach(System.out::println); Stream<T> sorted(Comparator<? super T> var1); list.stream().sorted((lhs, rhs) -> lhs.getScore() - rhs.getScore()).forEach(System.out::println); sorted(Comparator.comparing(item -> item.getScore())) sorted(comparing(Item::getScore)) sorted(comparing(Item::getScore).reversed())
  • 4. sorted() class Item { private int score; private String name; } // 생성자, getter, toString() 추가 List<Item> list = Arrays.asList(new Item(6, "air"), new Item(2, "baby"), new Item(7, "car"), new Item(4, "data"), new Item(3, "egg"), new Item(6, "fan")); - Comparator.thenComparing() - score로 정렬, name으로 역정렬 해보세요 - 스트림API로만
  • 5. sorted() LSA는? - Comparator의 하위포팅이 없다 - 앞에 해본건 쓸데가 없다 - Collections.reverseOrder(Comparator) 참고
  • 6. 숫자형 스트림 int calories = menu.stream().map(Dish::getCalories).reduce(0, Integer::sum); int calories = menu.stream().map(Dish::getCalories).sum(); 박싱 비용, 간결한 표기 Stream<T>에 sum()을 만들 수가 없다 기본형 특화 스트림 (primitive stream specialization)
  • 7. 숫자형 스트림 IntStream, LongStream, DoubleStream int calories = menu.stream().mapToInt(Dish::getCalories).sum(); intStream.boxed() OptionalInt IntStream.rangeClose(1, 100); // [1, 100] IntStream.range(1, 100); // (1, 100)
  • 8. 숫자형 스트림 실습 boolean isPrime(int number); LSA로 풀어 보세요
  • 9. 컬렉터 지금까지 다룬 것은 중간 연산 - 한 스트림을 다른 스트림으로 변환 - 연산을 연결 - 스트림 파이프라인을 구성 - 소비하지는 않는다 최종 연산 collect
  • 10. 컬렉터 Map<Currency, List<Transaction>> transactionsByCurrencies = transactions.stream().collect(groupingBy(Transaction::getCurrency));
  • 11. toList() List<T> list = stream.collect(Collectors.toList()); 앞으로 Collectors는 정적 임포트한 것으로 가정
  • 12. 요약 연산 Comparator<Dish> dishCaloriesComparator = Comparator.comparingInt(Dish::getCalories); Optional<Dish> mostCalorieDish = menu.stream() .collect(maxBy(dishCaloriesComparator)); minBy() counting() summingInt() averagingInt() summarizingInt()
  • 13. 문자열 연결 String shortMenu = menu.stream.map(Dish::getName).collect(joining()); shortMenu = menu.stream.map(Dish::getName).collect(joining(“, ”));