null 입력은 가능하지만 한 번만 저장 가능하고 중복될 수 없습니다.
객체(데이터)를 중복 저장할 수 없고, 순서를 보장하지 않습니다.
내부적으로 HashMap을 사용합니다.
null 입력은 가능하지만 한 번만 저장 가능하고 중복될 수 없습니다.
객체(데이터)를 중복 저장할 수 없지만 오름차순으로 데이터를 정렬합니다.
내부적으로 TreeMap을 사용합니다.
null 입력은 가능하지만 한 번만 저장 가능하고 중복될 수 없습니다.
객체(데이터)를 중복 저장할 수 없지만 입력한 순서대로 데이터를 정렬합니다.
내부적으로 LinkedHashMap을 사용합니다.
HashSet은 Set 인터페이스의 구현 클래스 이다. HashSet은 객체들을 순서 없이 저장하고 동일한 객체는 중복 저장하지 않는다. HashSet에서의 동일한 객체는 꼭 같은 인스턴스를 뜻하지는 않으며 객체를 저장하기 전에 객체의 hashCode() 메소를 호출해 해시코드를 얻어낸 뒤 저장되어 있는 객체중 동일한 해시코드가 있다면 다시 equals() 메소드로 두 객체를 비교해 true가 나오면 동일한 객체로 판단하고 중복 저장을 하지 않는다.
TresSet은 Set 컬렉션의 검색 기능을 강화시킨 컬렉션 입니다. 이진 트리 구조를 사용하여 tree 구조를 가지면서 객체를 저장합니다. TreeSet 각각의 노드는 노드값인 value와 왼쪽과 오른쪽 자식 노드를 참조하기 위한 두개의 변수로 구성됩니다. TreeSet에 객체를 저장하면 자동으로 정렬되는데 부모값과 비교해서 낮은 값은 왼쪽 자식 노드에 , 높은 것은 오른쪽 자식 노드에 저장하게 됩니다.
같은 Set 컬렉션이지만 HashSet과 TreeSet의 차이점은 HashSet은 해시테이블을 이용하여 구현하기 때문에 그 요소들이 정렬되지 않습니다. 또한 HashSet의 add, remove, contains 메소드는 일정한 시간복잡도인 O(1)을 갖습니다. 반면에 TreeSet은 각각의 요소들을 자동으로 정렬시키며 add, remove, contains 메소드의 시간복잡도가 O(logN)을 갖게 됩니다.

HashSet > LinkedHashSet > TreeSet 순서로 성능의 차이를 보이며,
HashSet의 성능이 제일 좋다.