黑马程序员技术交流社区

标题: Collection [打印本页]

作者: 280270738    时间: 2013-6-22 09:40
标题: Collection
什么时候该用HashSet?什么时候用TreeSet?
作者: 张歆明    时间: 2013-6-22 09:44
当你需要对你的集合中的元素按照某种方式进行排序的时候  如果想在添加完元素之后  就就已经排序完成 那此时选择TreeSet就比较好 记得实现Comparable接口

如果排序与否无关紧要的话 那就使用HashSet  使用HashSet时候 要重写Object的equals和hashCode
作者: 王磊    时间: 2013-6-22 10:54
个人理解,大多数情况都是使用TreeSet的。首先两者都有默认的排序功能,HashSet是通过地址值(哈希值)的先后进行排序,而TreeSet是通过元素的自然顺序(元素的码表顺序)排列,这都是以元素自身的特征决定的。但是TreeSet对比HashSet的优势是可以自定义一个比较器功能,来实现自定义的排序,并且比较器优先于元素自身排序功能。这样看来,TreeSet的扩展性比较好,因为如果需要自定义排序时,则不需要去改变元素自身所具有的默认顺序,就可以实现自定义排序,而HashSet要想实现自定义排序,就必须通过覆写元素内部的顺序特征(hashCode和equals)。所以尽量选择不改变原码,就可以实现自定义功能的方式,也就是选择TreeSet。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2