Set是什么?第一点:我们把这个集合想象成一个罐子,他记不住元素的顺序。

                    第二点:这个集合不允许出现相同的元素。

                    第三点:这个集合的长度表示方法是size()。

接下来从API中找几个常用的方法:

摘要
 boolean add(E e)
          如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
 boolean addAll(Collection<? extends E> c)
          如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。
 Iterator<E> iterator()
          返回在此 set 中的元素上进行迭代的迭代器。
 Object[] toArray()
          返回一个包含 set 中所有元素的数组。
以上是比较常用的方法。


常见子类:HashSet、LinkedHashSet、TreeSet三个子类的异同

HashSet:通过hascode值和equals比较两个元素是否相等,排序是按照hascode值来进行排序的。

LinkedHashSet:它继承与HashSet,所以不允许重复元素,并且加入了链表,可以保证插入顺序(性能就差了一点)

TreeSet:可以确保元素处于排序状态。包含两种排序方法:第一种是自然排序,实现comparable接口方法来进行排序(这个接口里面有compareTo方法)。第二种方法是定制排序,实现Comparator接口。