HashSet與TreeSet的區別

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 裏面不允許保存重複數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章