지난 26일(2014/7/26), 지앤선과 KSUG가 함께 진행했던 세미나에서 발표한 람다 관련 내용입니다.
첫 시간에 정대원님이 발표하신 람다 기본에 다루지 않은 내용만 정리했는데 지난 번에 올렸던 자료(http://www.slideshare.net/gyumee/java-8-lambda-35352385)의 후편으로도 볼 수 있을 것 같습니다.
제 발표는 장표만으로 내용을 가늠하기 어려운데 그래도 이번에는 청각 장애인들도 참여한다고 해서 장표에 글자를 많이 넣으려고 했습니다.
탑크리에듀교육센터(www.topcredu.co.kr)제공
스프링프레임워크 & 마이바티스(Spring Framework, MyBatis)
17번째 자료입니다. 참고하시어 많은 도움되셨길 바랍니다.
교육 및 수강문의/기타문의사항은 홈페이지(www.topcredu.co.kr)를 통하여 하실 수 있습니다.^^
이것이 자바다 Chap.16 스트림&병렬처리 Stream¶llel processing(java) 발표용 PPT
이 자료는 인코딩 과정에서 슬라이드가 다 날라가 버려서 중간중간이 날라갔습니다......
간단하게 정리한 것.
이것이 자바다 책을 기반으로 작성한 강의용 PPT입니다.
부족한게 많으니 사용하실 때에는 추가하셔서 쓰세요~
참고 자료 : 이것이 자바다
사진 첨부 : http://palpit.tistory.com/
2. 스트림API의 소개
List<Dish> lowCaloricDishes = new ArrayList<>();
for (Dish d : menu) {
if (d.getCalories() < 400) {
lowCaloricDishes.add(d);
}
}
Collections.sort(lowCaloricDishes, new Comparator<Dish>() {
@Override
public int compare(Dish d1, Dish d2) {
return Integer.compare(d1.getCalories(), d2.getCalories());
}
});
List<String> lowCaloricDishesName = new ArrayList<>();
for (Dish d : lowCaloricDishes) {
lowCaloricDishesName.add(d.getName());
}
컬렉션을 다뤄야 할 일이 많지만..
3. 스트림API의 소개
SELECT name FROM dishes WHERE calorie < 400 ORDER BY calorie;
List<String> lowCaloricDishesName = menu.stream()
.filter(d -> d.getCalories() > 400)
.sorted(comparing(Dish::getCalories))
.map(Dish::getName)
.collect(toList());
4. 함수형 스타일 코드는
변수의 명시적인 변경이나 재할당 문제를 피할 수 있다
서술적인 코드 작성이 가능하다
간결하다
직관적이다
명령형 -> 서술형
5. 스트림API의 특징은
List<String> lowCaloricDishesName = menu.parallelStream()
.filter(d -> d.getCalories() > 400)
.sorted(comparing(Dish::getCalories))
.map(Dish::getName)
.collect(toList());
선언형
조립할 수 있음
병렬화
6. 스트림과 컬렉션
컬렉션 : 모든 값을 메모리에 저장하는 자료구조
스트림 : 요청할 때만 요소를 계산
예) 스트리밍 영화, 소수 계산
1) 딱 한 번만 탐색할 수 있다
List<String> title = Arrays.asList(...);
Stream<String> s = title.stream();
s.forEach(System.out::println);
s.forEach(System.out::println); //java.lang.IllegalStateException
LSA에서는 예외는 발생하지 않는다. 그러
나 다시 반복되지 않고 바로 연산이 끝나기
때문에 한 번만 탐색할 수 있는 것은 동일하
다
7. 스트림과 컬렉션
2) 외부 반복과 내부 반복
내부에서 병렬 처리가 가능해 지고
최적화된 순서로 처리할 수 있다