论坛首页 入门技术论坛

Collection中的Set

浏览 1313 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-09  

Set定义:

        一个集合里没有重复元素。确切的说:Sets中不存在这样的一对元素e1和e2,使得e1.equals(e2),同时最多含有一个null元素。模型是数学中的set.


Set结构层次:

         Collection-->Set-->AbstractSet-->HashSet;

         Collection-->Set-->AbstractSet-->LinkedHashSet;

         Collection-->Set-->SortedSet-->TreeSet;

         Collection-->Set-->AbstractSet-->TreeSet


Set与List的选择:

         链表和数组能够确定元素的顺序。如果:你要操找某元素,又不确定它的顺序,则需要访问所有元素,直到匹配。如果你在意顺序,你采用List,如果你不在意元素的顺序,Set会是很好的选择!因为"散列表"这种数据结构让你快速的查找对象。同时Set有一实现:HashSet采用了这种数据结构。关于散列表,请查看相关数据结构的书籍!注意:当你改变散列集中的元素时,如果被改变的元素的散列码也要改变,那么元素在数据结构中的位置也要做相应的变化。

 

 

HashSet和TreeSet的选择:

              TreeSet是一个有序集合!它是以红-黑树数据结构来实现的。每当一个元素调价到TreeSet中,该元素会被放置到恰当的排序位置。迭代器总是按照排序后的顺序来访问各个元素。它添加元素的速度比HashSet慢,比Array,List快!对象的比较:TreeSet假设你插入的元素实现了Comparable接口!对同一类,可以通过实现Comparator定制不同的比较策略!选择的标准是:你所保存的对象需不需要对数据进行排序!

 


HashSet添加元素时会调用多少个方法?

                  首先:hashcode()方法,计算对象的散列码,如果存在这样的散列表元则调用equals()方法,判断散列表单元是否有equals对象,没有,实行插入,否则,插入失败!

 


论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics