最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解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

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

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

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

2. TreeSet類

TreeSet是SortedSet接口的唯一實現(xiàn)類,TreeSet可以確保集合元素處于排序狀態(tài)。TreeSet支持兩種排序方式,自然排序 和定制排序,其中自然排序為默認(rèn)的排序方式。向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,如果是 負(fù)數(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,兩者中的值都不能重復(fù),就如數(shù)據(jù)庫中唯一約束。

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

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

相關(guān)文章

  • 詳解如何保護SpringBoot配置文件中的敏感信息

    詳解如何保護SpringBoot配置文件中的敏感信息

    使用過SpringBoot配置文件的朋友都知道,資源文件中的內(nèi)容通常情況下是明文顯示,安全性就比較低一些,所以為了提高安全性,就需要對配置文件中的敏感信息進行保護,下面就為大家介紹一下實現(xiàn)方法吧
    2023-07-07
  • Java中的靜態(tài)內(nèi)部類詳解及代碼示例

    Java中的靜態(tài)內(nèi)部類詳解及代碼示例

    這篇文章主要介紹了Java中的靜態(tài)內(nèi)部類詳解及代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • SpringBoot實現(xiàn)數(shù)據(jù)加密脫敏的示例代碼

    SpringBoot實現(xiàn)數(shù)據(jù)加密脫敏的示例代碼

    這篇文章主要為大家學(xué)習(xí)介紹了SpringBoot如何利用注解+反射+AOP實現(xiàn)數(shù)據(jù)加密脫敏的功能,文中的示例代碼講解詳細,需要的可以參考一下
    2023-08-08
  • 基于springboot實現(xiàn)一個簡單的aop實例

    基于springboot實現(xiàn)一個簡單的aop實例

    這篇文章主要介紹了基于springboot實現(xiàn)一個簡單的aop,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • JavaWeb評論功能實現(xiàn)步驟以及代碼實例

    JavaWeb評論功能實現(xiàn)步驟以及代碼實例

    項目初始版本上線,有時間寫點東西記錄一下項目中的心得體會,通過這個項目學(xué)習(xí)了很多,要寫下來的有很多,先從評論功能開始吧,下面這篇文章主要給大家介紹了關(guān)于JavaWeb評論功能實現(xiàn)步驟以及代碼的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Springboot?中的?Filter?實現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    Springboot?中的?Filter?實現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    這篇文章主要介紹了Springboot?中的?Filter?實現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮,定義GzipFilter對輸出進行攔截,定義 Controller該 Controller 非常簡單,主要讀取一個大文本文件,作為輸出的內(nèi)容,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • spring注解識別一個接口的多個實現(xiàn)類方法

    spring注解識別一個接口的多個實現(xiàn)類方法

    下面小編就為大家?guī)硪黄猻pring注解識別一個接口的多個實現(xiàn)類方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 20秒教你學(xué)會java?List函數(shù)排序操作示例

    20秒教你學(xué)會java?List函數(shù)排序操作示例

    這篇文章主要為大家介紹了20秒教你學(xué)會List函數(shù)排序操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • RocketMQ消息隊列實現(xiàn)隨機消息發(fā)送當(dāng)做七夕禮物

    RocketMQ消息隊列實現(xiàn)隨機消息發(fā)送當(dāng)做七夕禮物

    這篇文章主要為大家介紹了RocketMQ消息隊列實現(xiàn)隨機消息發(fā)送當(dāng)做七夕禮物,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Springboot實現(xiàn)ModbusTCP通信的示例詳解

    Springboot實現(xiàn)ModbusTCP通信的示例詳解

    ModbusTCP協(xié)議是Modbus由MODICON公司于1979年開發(fā),是一種工業(yè)現(xiàn)場總線協(xié)議標(biāo)準(zhǔn),本文主要介紹了Springboot實現(xiàn)ModbusTCP通信的相關(guān)知識,需要的可以參考下
    2023-12-12

最新評論

靖江市| 贵德县| 诸城市| 吉林省| 定安县| 循化| 晋中市| 东乌珠穆沁旗| 平凉市| 图片| 德江县| 商丘市| 临沂市| 昌乐县| 东乌珠穆沁旗| 保定市| 芮城县| 疏附县| 武穴市| 河间市| 曲阳县| 文昌市| 商都县| 英德市| 延寿县| 靖西县| 沁阳市| 手游| 咸宁市| 拜泉县| 百色市| 新河县| 平阳县| 万全县| 西峡县| 崇信县| 德惠市| 夏邑县| 六枝特区| 天长市| 阜康市|