|
Set 接口不按特定的方式排序,只是简单地把对象加入集合中,但是Set集合不能包含重复对象 。Set接口由Set接口和Set 接口的实现类组成。 Set接口常用的实现类有HashSet 类与TreeSet类。
set接口常用 的实现类有HashSet类与TreeSet类 HashSet类实现了Set 接口,由哈希表支持。此类允许使用null元素。 HashSet类
HashSet具有的特点:
1 不能保证元素的排列顺序,顺序可能发生变化。
2 HashSet不是同步的,如果多个线程同时访问一个Set集合,如果多个线程同时访问一个HashSet,如果有2条或者以上的线程修改了 HashSet集合时,必须通过代码来保证其是同步的(TreeSet和EnumSet也一样)。
3 集合元素可以是null。 HashSet判断两个元素相等是的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode方法返回的值也相等。
如果equals比较相等,hashCode返回值不同,则HashSet将会把两个对象保存到不同的位置,即都添加成功
如果equals不相等,hashCode返回值相等,则HashSet将会试图把两个对象保存到同一个位置,实际上又不行,处理起来将很复杂,将导致性能下降。
TreeSet类不仅实现了Set接口,还实现了Java.util.SortSet接口,因此Tree类实现了Set集合,在遍历集合时按照自然顺序递增排序,也可以是指定比较器递增排序。 TreeSet 类增加的方法 f功能描述 frist() 返回Set中当前的第一个元素 last() 返回此Set中当前的最后一个元素 comparator 返回对此Set中元素进行排序的比较器;如果此Set使用其元素的自然顺序,则返回null headSet(Object obj) 返回一个新的Set集合,新集合包含obj(不包含)之前的所有对象 subSet(Object from,Object to) 返回一个新的Set集合,新集合包含from包含对象to(不包含)对象之间的所有对象; tail Set(Object to) 返回一个新的Set集合,新集合包含obj(不包含)之后的所有对象 存入TreeSet集合必须实现Comparable接口,该接口中的compareTo(Object o)方法比较此对象与指定对象的顺序。如果该对象小于、等于或大于等于指定对象,则分别返回负整数、零或正整数。
|