required와 completed에서 todo 계산하기

원본 Set을 유지한 채 복사본에서 차집합을 구한다.

  1. required 보존

    교육과정 순서를 가진 원본

    4개
  2. 복사본 생성

    new LinkedHashSet(required)

    소유권 분리
  3. removeAll

    completed 원소 제거

    차집합
  4. todo 출력

    미학습 주제만 순서대로 표시

    결과

핵심: retainAll과 removeAll은 수신 Set을 바꾸므로 입력 이력에는 직접 호출하지 않는다.