보통 실무에서 데이터를 불러올 경우 DB에서 정렬을 통하여 불러오기 떄문에 그 순서를 유지하기위해 ArrayList에 담는 경우가 많다. 처음 개발을 시작할 때는 자료구조의 'ㅈ'자도 몰라서 그냥 아무생각 없이 ArrayList의 contains 메소드를 호출하여 해당 데이터가 들어있는지 확인하였다. 허나 개발을 점점 해보면서 ArrayList의 contains는 시간복잡도가 O(n)이고 HashSet의 경우 시간복잡도가 O(1)이라 성능이 더 좋다는 것을 알게되었다. 이에 대해 ArrayList의 경우 모든 객체의 값을 하나하나 확인을 해봐야하나 HashSet의 경우 Key로 가지고 있기 때문에 바로 불러올 수 있어서 라고만 단순히 생각하였다. 그렇게 사용하던 중 정확히 내부에서 어떻게 동작하는지가 궁..