HashSet和TreeSet的區別


 

Set中元素不可以重復,是無序的(這里無序是指存入元素的先后順序與輸出元素的先后順序不一致)

HashSet:內部的數據結構是哈希表,是線程不安全的。

    HashSet中保證集合中元素是唯一的方法:通過對象的hashCode和equals方法來完成對象唯一性的判斷。

 

    如果對象的hashCode值不同,則不用判斷equals方法,就直接存到HashSet中。

 

    如果對象的hashCode值相同,需要用equals方法進行比較,如果結果為true,則視為相同元素,不存,如果結果為false,視為不同元素,進行存儲。

 

注意:如果元素要存儲到HashCode中,必須覆蓋hashCode方法和equals方法。

 

TreeSet:可以對Set集合中的元素進行排序,是線程不安全的。

    TreeSet中判斷元素唯一性的方法是:根據比較方法的返回結果是否為0,如果是0,則是相同元素,不存,如果不是0,則是不同元素,存儲。

 

    TreeSet對元素進行排序的方式:

 

元素自身具備比較功能,即自然排序,需要實現Comparable接口,並覆蓋其compareTo方法。

元素自身不具備比較功能,則需要實現Comparator接口,並覆蓋其compare方法。

注意:LinkedHashSet是一種有序的Set集合,即其元素的存入和輸出的順序是相同的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM