HashSet、TreeSet、LinkedHashSet都是实现了Set接口然后将一系列数据放在一起,其中的数据不能重复
Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中add方法返回false。Set判断两个对潒相同不是使用==运算符而是根据equals方法。
不能保证元素的排列顺序顺序有可能发生变化,其运用的是HashMap存储的(Hash表)不能有重复的元素;
当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值然后根据 hashCode值来决定该对象在HashSet中存储位置。
HashSet集合判断两个元素相等嘚标准是两个对象通过equals方法比较相等并且两个对象的hashCode()方法返回值相等。
如果要把一个对象放入HashSet中重写该对象对应类的equals方法,也应该hashCode()方法其规则是如果两个对 象通过equals方法比较返回true时,其hashCode也应该相同另外,对象中用作equals比较标准的属性都应该用来计算 hashCode的值。
所有数据存儲在二叉树上有序且不重复
TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,如果是我们自定义的类我们需要重写equals方法,或者通過CompareTo方法比较没有返回0最后打印的时候我们需要用CompareTo来对它进行一次规定排序。
有序(是按照添加的先后顺序)
LinkedHashSet集合同样是根据元素的hashCode值來决定元素的存储位置,但是它同时使用链表维护元素的次序这样使得元素看起 来像是以插入顺序保存的,也就是说当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素