Collections.shuffle() 불변객체
2023. 11. 8. 10:17ㆍ우아한테크코스/프리코스
아래처럼, LottoOneSet객체를 생성할때,
generateRandomNumbers()에서 Randoms.pickUniqueNumbersInRange를 통해 1부터 45까지의 숫자 6개를 무작위로 생성한 후, 이를 토대로 정렬하려고 하였다.
그러나 ApplicationTest에서 아래와 같은 오류가 났음을 확인할 수 있었다.
ImmutableCollections라고 하는데.. 난 이걸 쓴적이 없는데 뭐지?
혹시나 싶어 Randoms.pickUniqueNumbersInRange때문인가 싶어. Randoms클래스를 확인해보았다.
Randoms클래스는 Collections.shuffle메소드를 통해 결과를 반환함을 확인할 수 있었다.
Collections.shuffle()메소드는 자바의 불변객체로, 요소를 무작위로 생성한 후, 그 객체의 리스트는 절대로 바꿀 수 없다는 것이다.
따라서, 코드를 아래처럼 수정하였다. 새로운 리스트를 생성하여, 그 리스트를 토대로, 다시 정렬하도록 반환하였더니 에러는 수정할 수 있었다.
우아한 테크코스 최종코테 결과도 나오지 않았지만,
최종코테를 미리 대비하여, Randoms.pickUniqueNumbersInRange는 Collections.shuffle()를 통해 불변객체를 반환함을 잊지 말자.
'우아한테크코스 > 프리코스' 카테고리의 다른 글
일급컬렉션 사용 이유와 불변성 보장 방법 (0) | 2024.01.12 |
---|---|
전역에러를 처리하는 ControllerAdvice, RestControllerAdvice (0) | 2024.01.11 |
HashSet 중복여부 판별 재정의 (0) | 2024.01.11 |
getter를 지양해야하는 이유 및 지양 방법, 또 무조건 지양해야해? (0) | 2024.01.11 |
입력값 검증을 InputView에서 할까? VS Domain에서 할까? (0) | 2024.01.11 |