Set 接口主要有两个实现类,分别是 HashSet 和 TreeSet。
    其中,HashSet 根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。
    TreeSet 则是以二叉树的方式来存储元素,它可以实现对集合中的元素进行排序。

    Set 接口和 List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Collection 接口更加严格了,添加了禁止重复元素的限制。
    与 List接口不同的是,Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。

    Set 接口与 List 接口相比没有那么多操作方法,比如:
    1、List 接口能直接设置或获取某个元素的值,Set 接口不能。
    2、List 接口能直接在指定位置删除、添加元素,Set 接口不能。
    3、List 接口有 listIterator() 方法,可以获得 listIterator 对象,Set 接口不能。Set 只能通过 iterator 迭代的方式获取元素。

    Set 声明的方法如下表中所示

    方法 描述
    add() 添加一个对象到集合中
    clear() 从集合中删除所有对象
    contains() 如果指定的对象是集合中的元素,则返回 true
    isEmpty() 如果集合没有元素,则返回 true
    iterator() 返回集合的 Iterator 对象,该对象可用于检索对象
    remove() 从集合中删除指定对象
    size() 返回集合中的元素数