java基础(七)--- set

 

Set

(1)Set集合的特点
无序(存入和取出顺序),唯一


(2)HashSet集合
  A:底层数据结构是哈希表(是一个元素为链表的数组)
  B:哈希表底层依赖两个方法:hashCode()和equals()
    执行顺序:
    首先比较哈希值是否相同
    相同:继续执行equals()方法
    返回true:元素重复了,不添加
    返回false:直接把元素添加到集合
    不同:就直接把元素添加到集合
   C:如何保证元素唯一性的呢?
  由hashCode()和equals()保证的

注意:如果需要把某个类的对象保存到HashSet集合中,重写equals()方法和hashCode()方法是,尽量保证对象通过equals()方法返回值为true时,hashCode的返回值也为true;

   HashSet中每个能存储元素的“槽位”slot通常被称为“桶”bucket,如果有多个元素的hashCode值相同,但equals()方法返回false。就需要在一个“桶”里放多个元素,这样会导致性能下降;

(3)TreeSet集合
  A:底层数据结构是红黑树(是一个自平衡的二叉树)
  B:保证元素的排序方式
    a:自然排序(元素具备比较性)
      让元素所属的类实现Comparable接口
    b:比较器排序(集合具备比较性)
      让集合构造方法接收Comparator的实现类对象

 TreeSet判断两个元素是否相等,是通过compareTo()方法返回值,值为0,认为元素相等。

posted @ 2015-06-03 14:17  judy999  阅读(183)  评论(0编辑  收藏  举报