導航:首頁 > 數據分析 > 數據結構怎麼輸出不重復的有序表

數據結構怎麼輸出不重復的有序表

發布時間:2025-05-21 19:46:20

『壹』 Set集合,放的元素不能重復,請問它的判斷重不重復是怎麼實現的

你好,首先要明白一點:加入Set裡面的元素必須定義equals()方法以確保對象的唯一性。
第一個問題:
TreeSet的底層實現是採用紅-黑樹的數據結構,採用這種結構可以從Set中獲取有序的序列,但是前提條件是:元素必須實現Comparable介面,該介面中只用一個方法,就是compareTo()方法。當往Set中插入一個新的元素的時候,首先會遍歷Set中已經存在的元素(當然不是採用順序遍歷,具體採用什麼方法,建議自己去看看源碼),並調用compareTo()方法,根據返回的結果,決定插入位置。進而也就保證了元素的順序。

第二個問題:
上面已經說過,加入Set裡面的元素必須定義自己的equals()方法,但是對於良好的設計風格,最好在覆蓋equals()方法的同時,也覆蓋hashCode()方法,當然,對於TreeSet而言不用覆蓋hashCode()方法也可。請記住:覆蓋hashCode()方法的目的,只有一個原因就是提高效率。
在往Set中插入新的對象時,首先會用該對象的hashCode()與已經存在對象的hashCode()做比較,如果相等,那就不能插入,如果不等,才會調用equals()方法,如果equals結果為true,說明已經存在,就不能再插入,如果為false,可以插入。
註:如果沒有覆蓋hashCode()方法,那就是只比較equals().對兩個對象equals運算,是判斷兩個對象是否相等的關鍵。

第三個問題:
2)HashSet與TreeSet區別:
1、TreeSet 是二差樹實現的,Treeset中的數據是自動排好序的,不允許放入null值
2、HashSet 是哈希表實現的,HashSet中的數據是無序的,可以放入null,但只能放入一個null,兩者中的值都不能重復,就如資料庫中唯一約束
3、HashSet要求放入的對象必須實現HashCode()方法,放入的對象,是以hashcode碼作為標識的,而具有相同內容的String對象,hashcode是一樣,所以放入的內容不能重復。但是同一個類的對象可以放入不同的實例

閱讀全文

與數據結構怎麼輸出不重復的有序表相關的資料

熱點內容
androidintent下載文件 瀏覽:811
win7系統vdi文件下載 瀏覽:199
批量文件路徑列表復制 瀏覽:687
svn增加文件桌面圖標也變了 瀏覽:514
Abb機器人怎麼編程畫圓 瀏覽:958
手機微信接收的文件存儲在哪裡 瀏覽:546
js怎麼給div加邊框顏色 瀏覽:645
nodejshttphtml5 瀏覽:915
如何快速將文件內容快速調整 瀏覽:349
marsandroid開發視頻教程 瀏覽:814
word信任中心 瀏覽:480
pr有哪些預設文件 瀏覽:752
寶馬5系藍牙升級 瀏覽:950
ipad壓縮文件夾不見了 瀏覽:280
蘋果怎麼隱藏軟體視頻文件怎麼打開 瀏覽:541
按一列生成excel新文件 瀏覽:941
word列印機無法列印pdf文件夾 瀏覽:866
4s刷機成功白蘋果之後黑屏 瀏覽:503
自己在網路上如何開發市場 瀏覽:830
華為手機上的硬體管理工具下載 瀏覽:767

友情鏈接