검증, 객체 모델, 컬렉션과 Stream을 하나의 프로그램으로 연결합니다.
실제 개발에서는 여러 문법을 계층별 책임으로 조합합니다. 입력 검증은 생성자, 데이터 보관은 객체와 컬렉션, 집계는 서비스 메서드, 출력은 진입점이 담당하도록 나눕니다.
예제에서 input → validate → model → aggregate → present 부분부터 찾으세요. 선언 타입, 실제 객체와 반환값을 한 줄씩 따라가면서 컴파일 단계에서 잡히는 문제와 실행 중 생기는 문제를 구분하세요.
아래 프로그램은 불변 값 객체로 학습 기록을 검증하고 Stream으로 완료율 순위를 계산합니다. 각 단계는 별도 테스트가 가능합니다.
실무에서는 외부 입력 DTO와 도메인 모델, 저장 모델을 필요에 따라 분리하고 오류를 안정적인 API 응답으로 변환합니다.
현재 코드를 먼저 실행해 출력과 타입 흐름을 확인한 뒤 사용자별 여러 기록을 합산하는 서비스로 확장하세요.
파싱, DB 접근, 계산과 출력까지 main의 큰 반복문 하나에 넣지 마세요.
직접 바꿔보세요사용자별 여러 기록을 합산하는 서비스로 확장하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.