HashSet和TreeSet 分别实现对象的排序操作

来源:互联网 发布:wish数据分析平台 编辑:程序博客网 时间:2024/04/30 04:05

一、首先要明确Set子接口与list子接口的不同,那就是list子接口是可以保存重复的数据的,而Set子接口是不能保存重复的数据的。


利用HashSet和TreeSet两个子类来实现Set接口的功能。


1、HashSet与TreeSet接口的一点不同,HashSet  保存的数据是无序的,TreeSet保存的数据是有序的,所以如果要想保存的数据有序应该使用TreeSet子类。

2、利用TreeSet保存自定义类对象的时候,自定义所在的类一定要实现Comparable接口,如果没有实现这个接口那么就无法区分大小关系,而且在TreeSet中如果要进行排序,那么就要将所有的字段都进行比较,就是说在TreeSet中是依靠comparato()方法返回的是不是0来判断是不是重复元素的。

3、如果是HashSet子类,那么其判断重复数据的方式不是依靠的comparable接口而是Object类之中的两个方法:(1)取得对象的哈希码 hashCode();(2)对象比较:equals(); 这俩个方法均不需要自己编写,在eclipse里面可以使用右键source 选择自动生成。就像生成Getter 和Setter 方法一样。

总结:TreeSet 依靠的是Comparable 来区分重复数据;
HashSet 依靠的是hashCode()、equals()来区分重复数据
Set 里面不允许保存重复数据。

0 0
原创粉丝点击