hashset去重原理_Java之HashSet,Linkedset常用功能以及介绍
HashSet
Set的子類
固然 其有無序 不會有重復值的功能
說到這 為什么HashSet中不會有重復的元素呢?
首先對于java自帶的數據類型而言(像String Integer 等) java自身就已經重寫了里面的叛變方法
然而對于 自定義的數據類型(也就是自定義的類而言呢)如果不關心其底層方法如何實現的話
那么將會喪失HashSet中獨有的排除重復值的功能
那么怎么樣去解決自定義類排除重復值的功能 其實很簡單
重寫自定義類中的hashCode 和euqals方法就行
由于都明白 HashSet的底層是由哈希算法實現的 通過哈希算法每個對象將會返回一個int值
至于怎么算我就不說了。 通過這個int值 就相當于給每個創建的對象一個編號 如果不重寫這個int值的話 那么每個對象都會獲得不同的編號 而不會比較其內容 所以自然而然 HashSet的去重方法也就沒有了 因此需要更改這個int值 然后當對象創建出來的時候(如果是相同的對象就是同一個int值 那么再去比較equals方法 來判斷其屬性(內容))
當然友好的eclipse為我們提供了重寫HashCode和equals的方法(快捷鍵操作 ctrl+alt+s+h) 這樣方便許多
盡管這樣 但是對于其原理的理解依然要熟記于心
LinkedHashSet 是HashSet的子類
底層鏈表實現 功能就是 怎么存怎么取(FIFO) 按照存儲的順序 去取元素
存a,b,c,d 取 a,b,c,d 因此效率比HashSet低一些
實現自定義類去重功能的代碼
import java.util.HashSet;import com.heiam.bean.Person;public class Demo1_HashSet {/** * @param args * Set集合,無索引,不可以重復,無序(存取不一致) */public static void main(String[] args) {//demo1();HashSet hs = new HashSet<>();hs.add(new Person("張三總結
以上是生活随笔為你收集整理的hashset去重原理_Java之HashSet,Linkedset常用功能以及介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建设银行卡密码输错3次怎么办
- 下一篇: java美元兑换,(Java实现) 美元