- 不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化.
- HashSet不是同步的,如果多个线程同时访问一个HashSet,修改了HashSet集合时,则必须通过代码来保证其同步.
- 集合元素的值可以为null.
当向HashSet集合中存入一个对象时,HashSet会调用该对象的hashCode()方法来得到对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置,如果有两个元素通过equals()方法比较返回true,但是它们的HashCode()方法返回值不相等,HashSet还是将会它们存储在不同的位置.简单的说HashSet集合判断两个元素相等的标准是两个对象通过equals()比较相等,并且两个对象的hashCode()方法返回值也相等.
3.TreeSet
-
Comparator comparator():如果TreeSet采用了定制排序,则该方法返回定制排序所使用的Comparator;如果TreeSet采用了自然排序,则返回null. -
Object first():返回集合中的第一个元素. -
Object last():返回集合中的最后一个元素 -
Object lower(Object e):返回集合中位于指定元素之前的元素(即小于指定元素的最大元素,参考元素不需要是该集合里面的元素) -
Object higher(Object e):返回集合中位于指定元素之后的元素(即大于该元素的最小元素,参考元素不需要是该集合里面的元素) -
SortedSet subSet(Object fromElement, Object toElement):返回此Set的子集合,前包后不包. -
SortedSet headSet(Object toElement):返回此Set的子集,由小于toElement的元素组成 -
SortedSet tailSet(Object toElement):返回此Set的子集,由大于或等于toElemet的元素组成
Treeset采用红黑树的数据结构来存储集合元素.TreeSet支持两种排序方法:自然排序和定制排序.默认采用自然排序.
对于TreeSet集合而言,它判断两个对象是否相等的唯一标准是两个对象通过compareTo()方法比较是否返回0,若为0,则认为它们相等,否则认为它们不相等.