日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

hashset去重原理_Java之HashSet,Linkedset常用功能以及介绍

發布時間:2024/10/8 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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常用功能以及介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。