국비
[ 30일차 181~182 ] 수업 정리 - 자바
코딩하는냥이
2025. 5. 27. 16:45
반응형
📌 오전 수업
1. Collectors.groupingBy + averagingDouble
- groupingBy()를 통해 성별로 그룹핑한 뒤,
- averagingDouble()로 각 그룹의 평균 점수를 계산
Map<String, Double> map = totalList.stream()
.collect(Collectors.groupingBy(s -> s.getSex(), Collectors.averagingDouble(s -> s.getScore())));
📌 출력 예시
{남=93.5, 여=90.0}
2. 일반 스트림 vs 병렬 스트림 성능 비교
- 데이터 수가 많을 경우 병렬 스트림(parallelStream())이 빠름
Stream<Integer> stream = scores.stream();
Stream<Integer> parallelStream = scores.parallelStream();
📌 출력 예시
avg : 49.999, 일반 스트림 처리 시간 : 55349243ns
avg : 49.999, 병렬 스트림 처리 시간 : 20773354ns
📌 오후 수업
3. 자바 연습문제 - 📞 전화번호부 만들기
✔ 주요 기능
- 등록
- 이름 중복 시 (1), (2) ... 숫자를 붙여 중복 방지
- 전화번호와 함께 저장
- 조회
- 정확히 일치하는 이름 찾기
- 입력 이름을 포함하는 항목들까지 검색
- 전체 출력
- 저장된 모든 항목을 출력
- 전화번호 포맷 정리
- 정규 표현식으로 01012345678 → 010-1234-5678 형식으로 변환
🧠 연습 문제 포인트
- HashMap 사용법
- entrySet()과 반복문 활용
- 정규 표현식으로 전화번호 포맷 처리
- 문자열 조작 및 조건 분기 처리
💡 포인트 정리
- Collectors.groupingBy()와 averagingDouble()의 조합으로 그룹별 평균 계산 가능
- 병렬 스트림은 대용량 데이터 처리에 성능 이점이 있음
- 실무 문제에서는 Map, Scanner, String, Pattern, 제어문을 자유롭게 조합할 수 있어야 함
- 직접 만든 telNum() 메서드는 입력 전화번호의 다양한 형태를 유연하게 처리함
📌 정리하자면,
30일차에는 스트림의 수집과 성능 분석, 그리고 실전 코딩 능력을 위한 종합 예제를 수행했습니다. 람다식과 스트림의 활용을 실제 프로그램에 적용하는 능력을 확실히 다질 수 있었던 수업이었습니다! ☎️💻