黑马程序员 Java基础——Set集合

来源:互联网 发布:淘宝怎么批量发布宝贝 编辑:程序博客网 时间:2024/04/30 10:55

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

Set集合


(1)Set集合的特点
                  无序,唯一


(2)HashSet集合


A:底层数据结构是哈希表(是一个元素为链表的数组)
B:哈希表底层依赖两个方法:hashCode()和equals()
  

执行顺序:
首先比较哈希值是否相同
相同:继续执行equals()方法
返回true:元素重复了,不添加
返回false:直接把元素添加到集合
不同:就直接把元素添加到集合


C:如何保证元素唯一性的呢?


由hashCode()和equals()保证的

如果元素的hashCode值相同,才会判断equals是否为true。

如果元素的hashCode值不同,不会调用equals。

 

注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法。这里要注意,是否重写hashCode和equals方法。


D:开发的时候,代码非常的简单,自动生成即可。
E:HashSet存储字符串并遍历
F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)

(3)TreeSet集合


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

 

 

TreeSet保证元素唯一性的依据:

 

 

TreeSet排序的第一种方式:让元素自身具备比较性。

    元素需要实现comparable接口,覆盖compareTo方法。这种方式也称为元素的自然顺序,也叫默认顺序。

TreeSet的第二种排序方式。

    当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。因此定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。当两种排序都存在时,以比较器为主

    定义一个类,实现Comparator接口,覆盖compare方法。

Iterator接口

主要方法:

    boolean hasNext():若被迭代的集合元素还没有被遍历,返回true.

    Object  next():返回集合的下一个元素.

    void remove():删除集合上一次next()方法返回的元素。(若集合中有多个相同的元素,都可以删掉)

    iterator对于集合才能用,foreach不同,只要是循环都可用。

模板代码:

Iterator iter = l.iterator();

while(iter.hasNext())

{

    System.out.println(iter.next());

}

 

 

 

 

0 0
原创粉丝点击