Set : 개체의 중복을 허용하지 않습니다.
- HashSet : Hashing 을 통해 구현되었으며 개체의 순서를 보장하지 않습니다. > **Hashing**
> 해시함수(hash function)란 데이터의 효율적 관리를 위해 key를 고정된 길이의 hash로 매핑하는 함수입니다. 이 때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 **해싱(hashing)** 이라고 합니다. 키값 중복으로 인해 hash 값에 대해 충돌이 발생할 수 있습니다.
> ![Imgur](https://i.imgur.com/NnEBDcX.png)
- LinkedHashSet : _double-linked list_ 로써 개체간의 순서를 보장합니다.
- TreeSet : 이진탐색트리(BinarySearchTree)의 형태로 데이터를 저장하며 순서를 유지하지 않습니다.
> **이진탐색 (BinarySearch)**
> 추가작성
> **이진탐색트리 (BinarySearchTree)** [참조](https://ratsgo.github.io/data%20structure&algorithm/2017/10/22/bst/)
> 이진탐색(binary search)과 연결리스트(linked list)를 결합한 자료구조의 일종입니다. 이진탐색의 추가 / 삭제시 단점을 개선하였습니다.