국비

[ 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. 등록
    • 이름 중복 시 (1), (2) ... 숫자를 붙여 중복 방지
    • 전화번호와 함께 저장
  2. 조회
    • 정확히 일치하는 이름 찾기
    • 입력 이름을 포함하는 항목들까지 검색
  3. 전체 출력
    • 저장된 모든 항목을 출력
  4. 전화번호 포맷 정리
    • 정규 표현식으로 01012345678 → 010-1234-5678 형식으로 변환

🧠 연습 문제 포인트

  • HashMap 사용법
  • entrySet()과 반복문 활용
  • 정규 표현식으로 전화번호 포맷 처리
  • 문자열 조작 및 조건 분기 처리

💡 포인트 정리

  • Collectors.groupingBy()와 averagingDouble()의 조합으로 그룹별 평균 계산 가능
  • 병렬 스트림은 대용량 데이터 처리에 성능 이점이 있음
  • 실무 문제에서는 Map, Scanner, String, Pattern, 제어문을 자유롭게 조합할 수 있어야 함
  • 직접 만든 telNum() 메서드는 입력 전화번호의 다양한 형태를 유연하게 처리함

📌 정리하자면,
30일차에는 스트림의 수집과 성능 분석, 그리고 실전 코딩 능력을 위한 종합 예제를 수행했습니다. 람다식과 스트림의 활용을 실제 프로그램에 적용하는 능력을 확실히 다질 수 있었던 수업이었습니다! ☎️💻