반응형
📌 오전 수업
1. map, mapToInt, boxed, asDoubleStream
- mapToInt() : 객체 스트림 → 기본형 스트림(IntStream 등) 변환
- asDoubleStream() : int → double 스트림으로 변환
- boxed() : 기본형 스트림을 객체 스트림으로 변환
2. flatMap, flatMapToInt
- 다차원 구조를 평탄화(flatten)
list.stream()
.flatMap(str -> Arrays.stream(str.split(" ")))
.forEach(System.out::println);
3. 정렬 (Sorting)
- sorted() : 기본 정렬 (Comparable 구현 필요)
- sorted(Comparator) : 사용자 정의 정렬
.sorted((s1, s2) -> Integer.compare(s1.getScore(), s2.getScore())) // 오름차순
.sorted((s1, s2) -> Integer.compare(s2.getScore(), s1.getScore())) // 내림차순
4. peek, forEach, sum
- peek() : 중간 연산으로 디버깅용 출력
- forEach() : 최종 연산, 직접 실행됨
5. 조건 검사 (Matching)
- allMatch, anyMatch, noneMatch 를 통해 조건 만족 여부 검사
6. 집계 연산 (Aggregate)
- count(), sum(), average(), max(), min(), findFirst()
7. OptionalDouble 사용법
- isPresent() / orElse() / ifPresent() 를 통해 평균값 안전 처리
8. reduce() 연산
- 누산기를 사용한 수동 합계 계산
.reduce(0, (a, b) -> a + b)
📌 오후 수업
1. collect(toList())
- 스트림의 결과를 리스트로 수집
List<Student> males = list.stream()
.filter(s -> s.getSex().equals("남"))
.toList();
2. collect(Collectors.toMap())
- 이름과 점수를 키-값 쌍으로 수집
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(Student::getName, Student::getScore));
3. collect(Collectors.groupingBy())
- 성별을 기준으로 학생 그룹핑
Map<String, List<Student>> grouped = list.stream()
.collect(Collectors.groupingBy(Student::getSex));
- 이후 남학생/여학생 그룹을 나눠 출력
💡 포인트 정리
- map, flatMap, sorted, reduce, collect 등은 스트림의 핵심 기능
- peek()은 중간 디버깅 용도로 사용하며, 반드시 최종 연산과 함께 써야 동작
- collect()는 스트림 결과를 리스트, 맵, 그룹핑 형태로 수집할 때 사용
- Optional은 평균값 등 존재할 수도 안 할 수도 있는 결과를 다룰 때 유용
📌 정리하자면, 29일차에는 스트림의 데이터 가공과 수집 능력을 집중적으로 익혔습니다. 실무에서 자주 쓰이는 map, filter, collect, reduce 등의 메서드들을 실제 코드로 다뤄 보며, 데이터 흐름 중심의 프로그래밍 방식에 익숙해지는 시간이었습니다!
'국비' 카테고리의 다른 글
[ 32일차 0~1 ] 수업 정리 - SQL (1) | 2025.05.29 |
---|---|
[ 31일차 ] SQL 시작 초기 (2) | 2025.05.28 |
[ 30일차 181~182 ] 수업 정리 - 자바 (1) | 2025.05.27 |
[ 28일차 161~168 ] 수업 정리 - 자바 (1) | 2025.05.23 |
[ 27일차 153~160 ] 수업 정리 - 자바 (0) | 2025.05.22 |
[ 26일차 145~152 ] 수업 정리 - 자바 (0) | 2025.05.21 |