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