亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Java中HashSet和TreeSet的區(qū)別

 更新時間:2017年06月29日 14:53:06   投稿:lqh  
這篇文章主要介紹了詳解Java中HashSet和TreeSet的區(qū)別的相關(guān)資料,需要的朋友可以參考下

詳解Java中HashSet和TreeSet的區(qū)別

1. HashSet

HashSet有以下特點:

不能保證元素的排列順序,順序有可能發(fā)生變化

不是同步的

集合元素可以是null,但只能放入一個null

當向HashSet集合中存入一個元素時,HashSet會調(diào)用該對象的hashCode()方法來得到該對象的hashCode值,然后根據(jù) hashCode值來決定該對象在HashSet中存儲位置。

簡單的說,HashSet集合判斷兩個元素相等的標準是兩個對象通過equals方法比較相等,并且兩個對象的hashCode()方法返回值相 等

注意,如果要把一個對象放入HashSet中,重寫該對象對應(yīng)類的equals方法,也應(yīng)該重寫其hashCode()方法。其規(guī)則是如果兩個對 象通過equals方法比較返回true時,其hashCode也應(yīng)該相同。另外,對象中用作equals比較標準的屬性,都應(yīng)該用來計算hashCode的值。

2. TreeSet類

TreeSet是SortedSet接口的唯一實現(xiàn)類,TreeSet可以確保集合元素處于排序狀態(tài)。TreeSet支持兩種排序方式,自然排序 和定制排序,其中自然排序為默認的排序方式。向TreeSet中加入的應(yīng)該是同一個類的對象。

TreeSet判斷兩個對象不相等的方式是兩個對象通過equals方法返回false,或者通過CompareTo方法比較沒有返回0

自然排序

自然排序使用要排序元素的CompareTo(Object obj)方法來比較元素之間大小關(guān)系,然后將元素按照升序排列。

Java提供了一個Comparable接口,該接口里定義了一個compareTo(Object obj)方法,該方法返回一個整數(shù)值,實現(xiàn)了該接口的對象就可以比較大小。

obj1.compareTo(obj2)方法如果返回0,則說明被比較的兩個對象相等,如果返回一個正數(shù),則表明obj1大于obj2,如果是 負數(shù),則表明obj1小于obj2。

如果我們將兩個對象的equals方法總是返回true,則這兩個對象的compareTo方法返回應(yīng)該返回0

定制排序

自然排序是根據(jù)集合元素的大小,以升序排列,如果要定制排序,應(yīng)該使用Comparator接口,實現(xiàn) int compare(T o1,T o2)方法。

3. 最重要

1、TreeSet 是二差樹實現(xiàn)的,Treeset中的數(shù)據(jù)是自動排好序的,不允許放入null值。

2、HashSet 是哈希表實現(xiàn)的,HashSet中的數(shù)據(jù)是無序的,可以放入null,但只能放入一個null,兩者中的值都不能重復,就如數(shù)據(jù)庫中唯一約束。

3、HashSet要求放入的對象必須實現(xiàn)HashCode()方法,放入的對象,是以hashcode碼作為標識的,而具有相同內(nèi)容的 String對象,hashcode是一樣,所以放入的內(nèi)容不能重復。但是同一個類的對象可以放入不同的實例 。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • java正則實現(xiàn)各種日期格式化

    java正則實現(xiàn)各種日期格式化

    本文給大家分享的是使用java結(jié)合正則表達式來實現(xiàn)各種日期的格式化功能,代碼非常的簡單,有需要的小伙伴可以參考下。
    2015-05-05
  • Java?實戰(zhàn)項目之家政服務(wù)平臺系統(tǒng)的實現(xiàn)流程

    Java?實戰(zhàn)項目之家政服務(wù)平臺系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)家政服務(wù)平臺系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • java正則表達式之Pattern與Matcher類詳解

    java正則表達式之Pattern與Matcher類詳解

    這篇文章主要給大家介紹了關(guān)于java正則表達式之Pattern與Matcher類的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 一文弄懂Mybatis中介者模式

    一文弄懂Mybatis中介者模式

    本文主要介紹了一文弄懂Mybatis中介者模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java web中 war exploded 的解決方案

    Java web中 war exploded 的解決方案

    這篇文章主要介紹了Java web中 war exploded 的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring項目XML文件使用小結(jié)

    Spring項目XML文件使用小結(jié)

    這篇文章主要介紹了Spring項目XML文件使用常見介紹,主要包括項目pom文件,項目初始IOC容器及項目需要自動裝配的代碼詳解,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Java ThreadLocal的使用場景總結(jié)

    Java ThreadLocal的使用場景總結(jié)

    ThreadLocal原本設(shè)計是為了解決并發(fā)時,線程共享變量的問題,但由于過度設(shè)計,從而導致它的理解難度大和使用成本高等問題。即便如此,ThreadLocal依舊有適合自己的使用場景,比如本文要介紹了這兩種使用場景,除了ThreadLocal之外,還真沒有合適的替代方案。
    2021-05-05
  • Springboot如何解決前端請求跨域的問題

    Springboot如何解決前端請求跨域的問題

    這篇文章主要介紹了Springboot如何解決前端請求跨域的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 處理java異步事件的阻塞和非阻塞方法分析

    處理java異步事件的阻塞和非阻塞方法分析

    這篇文章主要介紹了處理java異步事件的阻塞和非阻塞方法分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,阻塞與非阻塞關(guān)注的是交互雙方是否可以彈性工作。,需要的朋友可以參考下
    2019-06-06
  • springboot中validator數(shù)據(jù)校驗功能的實現(xiàn)

    springboot中validator數(shù)據(jù)校驗功能的實現(xiàn)

    這篇文章主要介紹了springboot中validator數(shù)據(jù)校驗功能,校驗分為普通校驗和分組校驗,每種校驗方式通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-10-10

最新評論