A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 280270738 中级黑马   /  2013-6-22 09:40  /  1355 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候该用HashSet?什么时候用TreeSet?

2 个回复

正序浏览
个人理解,大多数情况都是使用TreeSet的。首先两者都有默认的排序功能,HashSet是通过地址值(哈希值)的先后进行排序,而TreeSet是通过元素的自然顺序(元素的码表顺序)排列,这都是以元素自身的特征决定的。但是TreeSet对比HashSet的优势是可以自定义一个比较器功能,来实现自定义的排序,并且比较器优先于元素自身排序功能。这样看来,TreeSet的扩展性比较好,因为如果需要自定义排序时,则不需要去改变元素自身所具有的默认顺序,就可以实现自定义排序,而HashSet要想实现自定义排序,就必须通过覆写元素内部的顺序特征(hashCode和equals)。所以尽量选择不改变原码,就可以实现自定义功能的方式,也就是选择TreeSet。
回复 使用道具 举报
当你需要对你的集合中的元素按照某种方式进行排序的时候  如果想在添加完元素之后  就就已经排序完成 那此时选择TreeSet就比较好 记得实现Comparable接口

如果排序与否无关紧要的话 那就使用HashSet  使用HashSet时候 要重写Object的equals和hashCode
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马