본문 바로가기
Language/Java

자바 set 정렬 기준 및 예제

by wakestand 2019. 11. 26.
반응형

자바에서 set에 대해 배울 때 set은 정렬 순서가 없으며 무작위로 호출되기 때문에

순서를 가지게 하고 싶으면 LinkedHashSet을 사용하라는 식으로 많이 배웠을텐데

 

실제 set에 값을 넣고 iterator로 값을 꺼내보면

 

무작위로 넣었는데도 실 출력시 값이 정렬이 되어서 뽑히고

여러번 다시 출력하더라도 결과는 동일하다

이거 왜 이러지? 싶을텐데

 

실제 set에 값을 넣을 때 hashCode 값을 가지고 넣기 때문에

무작위로 넣는 것 처럼 보여도 실제로 뽑아보면 hash 코드 값 순으로 넣었기 때문에

무작위가 아닌 것이다

 

여기서 hashCode가 무조건 맞는 것이 아닌게

Returns an iterator over the elements in this set. The elements are returned in no particular order.

이렇게 특별한 순서가 있는 것은 아니다! 라고 설명에 써 놓았기 때문에

실제 여러 값을 넣어보며 테스트 할 시에는 hashCode와 다르게 들어오는 경우도 많다

다만 많은 경우에 hashCode 순서대로 넣고 뽑아낸다는 것이다

반응형

댓글