在创建集合的时候最好是使用泛型,这样可以避免转型异常
/*
* --|Set: 主要用来存储无序和不能重复的对象
* --| HashSet
*
* 特点:不会记录保存对象时候的顺序,但是执行的结果是唯一,不像线程那样
* 原理:底层是用的是哈希表进行对象的存储
* 当存储一个对象的时候,先计算出该对象的hashCode()返回的值,按照该值保存在HashSet中维护的那个
* 哈希表,如果两个对象的 hashCode()返回的值相等,那么JVM会自动调用对象的equals()再来判断两个
* 对象equals()的返回值,如果true,则认为该对象和集合的已有对象重复,所以不会添加,反之将该对象
* 以链条的方式保存在同样的hashCode的哈希表中
*
* 总结: 1、HashSet是如何来确保对象的不重复的呢?
* 先看hashCode() 再用equals()
* 2、HaseSet如何保证无序?
* hashCode() "aaa" "bbb" "ccc"
*
* --| TreeSet
*
*
*
*
*
*/
/*
* TreeSet:
* 特点: Set的特点都有
* 原理:底层维护的一颗二叉树(红黑树 )
* 在创建这棵树的时候要对对象进行比较(compareTo(String anotherString) 返回3个:负数、0、正数)
*
* 负数:放置在树的左边
* 0 :不放
* 正数:放置在树的右边
*
* 总结: 1、当在TreeSet中进行添加对象时,为了确保没有重复对象,所以TreeSet 调用该对象的compareTo()来比较