锁定老帖子 主题:Collection中的Set
精华帖 (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对象,没有,实行插入,否则,插入失败!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1313 次