hashSet与treeSet的去重原理
hashSet與treeSet的去重原理
1、TreeSet去重原理 :compareTo
可以實現排序及去重:如果compareTo返回0,說明是重復的,返回的是自己的某個屬性和另一個對象的某個屬性的差值,如果是負數,則往前面排,如果是正數,往后面排;
應用:放入TreeSet中的對象,類必須實現compareable接口,覆寫其compareTo方法,根據自己的需要改變其排序及去重規則,比如職員類,根據其工資水平進行去重和排序 。
2、hashSet去重原理:1,hashCode 2,equals是否相同
我們使用Set集合都是需要去掉重復元素的, 如果在存儲的時候逐個equals()比較, 效率較低,哈希算法提高了去重復的效率, 降低了使用equals()方法的次數
當HashSet調用add()方法存儲對象的時候, 先調用對象的hashCode()方法得到一個哈希值, 然后在集合中查找是否有哈希值相同的對象
如果沒有哈希值相同的對象就直接存入集合,如果有哈希值相同的對象, 就和哈希值相同的對象逐個進行equals()比較,比較結果為false就存入, true則不存
將自定義類的對象存入HashSet去重復 ?類中必須重寫hashCode()和equals()方法
hashCode(): 屬性相同的對象返回值必須相同, 屬性不同的返回值盡量不同(提高效率)
equals(): 屬性相同返回true, 屬性不同返回false,返回false的時候存儲。
總結
以上是生活随笔為你收集整理的hashSet与treeSet的去重原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 麦克风的指向性
- 下一篇: java中Date日期类型的大小比较