HashSet
- 순서가 없고, 값의 중복이 없다.
- Set 인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하고 싶다면 LinkedHashSet 클래스를 사용하면 된다.
- TreeSet은 범위 검색과 정렬에 유리한 컬렉션 클래스이다.
- TreeSet은 데이터가 많을수록 데이터 추가, 삭제에 시간이 더 걸린다.
- HashSet은 객체를 저장하기전에 기존에 같은 객체가 있는지 확인한다.
- 확인 후 같은 객체가 없으면 저장하고, 있으면 저장하지 않습니다.
- boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출해서 중복된 객체인지 아닌지 확인한다.
- 만약 작성한 클래스를 HashSet에 저장하고 싶으면 작성한 클래스에 equals()와 hasCode()가 오버라이딩 되어 있어야 정상적으로 작동한다. 아니면 같은 객체가 모두 저장된다. hashCode() 오버라이딩 할때 retrun에 Objects.hash(인스턴스변수)를 넣어주면 자동으로 hashcode를 만들어 반환 해준다.