欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的HashSet集合存儲數(shù)據(jù)的結(jié)構(gòu)詳解

 更新時間:2023年09月18日 10:29:10   作者:禿頭不禿頭農(nóng)  
這篇文章主要介紹了Java中的HashSet集合存儲數(shù)據(jù)的結(jié)構(gòu)詳解,數(shù)組結(jié)構(gòu)他把元素進行分組,相同哈希值的元素是一組,鏈表/紅黑樹結(jié)構(gòu)把相同哈希值的元素鏈接到一起,存儲數(shù)據(jù)到集合中,先計算元素的哈希值,需要的朋友可以參考下

HashSet集合存儲數(shù)據(jù)的結(jié)構(gòu)(哈希表) 哈希表

哈希表

  • 在jdk1.8版本之前,哈希表=數(shù)組+鏈表結(jié)構(gòu)
  • 在jdk1.8版本之后,值得注意的是。哈希表也=數(shù)組+鏈表,但是呢哈希表還=數(shù)組+紅黑樹(提高查詢的速度)

所以說哈希表的特點:查詢速度快

因為是一個集合,所以我們先畫一個容器

在這里插入圖片描述

數(shù)組結(jié)構(gòu)他把元素進行分組,相同哈希值的元素是一組。鏈表/紅黑樹結(jié)構(gòu)把相同哈希值的元素鏈接到一起,存儲數(shù)據(jù)到集合中,先計算元素的哈希值。

在這里插入圖片描述

隨后當我們儲存時,將哈希值放到數(shù)組中,當我們存儲元素時,會將哈希值相同的元素掛在數(shù)組的下方,形象如下圖:

在這里插入圖片描述

在上一篇文中,我舉例了兩個特殊的字符串:重地和通話,這兩個字符串的哈希值是相同的。這個我們稱之為哈希沖突(兩個元素不同,但是兩個哈希值相同)。

在這里插入圖片描述

當這兩個數(shù)據(jù)進行存儲時,也是將兩個元素放在同一個哈希值下方:

在這里插入圖片描述

哈希表查詢的速度非???,先把數(shù)據(jù)根據(jù)哈希值相同進行分組,數(shù)組查詢速度本來就快,因為數(shù)組的地址是連續(xù)的。分組之后我們在查詢時,先計算哈希值,然后通過哈希值找到所對應(yīng)的元素。

如果鏈表的長度超過了8位,那么就會把鏈表轉(zhuǎn)化為紅黑樹。目的就是提高查詢的速度。

到此這篇關(guān)于Java中的HashSet集合存儲數(shù)據(jù)的結(jié)構(gòu)詳解的文章就介紹到這了,更多相關(guān)HashSet集合存儲數(shù)據(jù)的結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java調(diào)用opencv身份證號識別詳解

    java調(diào)用opencv身份證號識別詳解

    這篇文章主要為大家詳細介紹了java如何調(diào)用opencv實現(xiàn)身份證號的識別,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • 如何查看Linux上正在運行的所有Java程序列表

    如何查看Linux上正在運行的所有Java程序列表

    在linux操作時,經(jīng)常要查看運行的項目的進程和端口,下面這篇文章主要給大家介紹了關(guān)于如何查看Linux上正在運行的所有Java程序列表的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Java Scanner如何獲取字符串和帶空格的字符串

    Java Scanner如何獲取字符串和帶空格的字符串

    這篇文章主要介紹了Java Scanner如何獲取字符串和帶空格的字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 如何基于ThreadPoolExecutor創(chuàng)建線程池并操作

    如何基于ThreadPoolExecutor創(chuàng)建線程池并操作

    這篇文章主要介紹了如何基于ThreadPoolExecutor創(chuàng)建線程池并操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java利用SPI實現(xiàn)解耦的示例詳解

    Java利用SPI實現(xiàn)解耦的示例詳解

    SPI的全稱是服務(wù)提供接口,可以用其來啟動框架的擴展和替換組件。本文將利用SPI實現(xiàn)解耦,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-04-04
  • Java并發(fā)編程中的CyclicBarrier使用解析

    Java并發(fā)編程中的CyclicBarrier使用解析

    這篇文章主要介紹了Java并發(fā)編程中的CyclicBarrier使用解析,CyclicBarrier從字面意思上來看,循環(huán)柵欄,這篇文章就來分析下是到底是如何實現(xiàn)循環(huán)和柵欄的,需要的朋友可以參考下
    2023-12-12
  • 一文詳解Java如何使用commons-csv搞定CSV文件操作

    一文詳解Java如何使用commons-csv搞定CSV文件操作

    在?Java?開發(fā)中,處理?CSV(逗號分隔值)文件是一項常見的任務(wù),本文將利用Apache?Commons?CSV?庫實現(xiàn)讀取,寫入和操作CSV文件,希望對大家有所幫助
    2025-02-02
  • Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法

    Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法

    Data Access Object數(shù)據(jù)訪問對象模式在Java操作數(shù)據(jù)庫部分的程序設(shè)計中經(jīng)常被使用到,這里我們就來看一下Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法:
    2016-06-06
  • MyBatis實現(xiàn)注冊及獲取Mapper

    MyBatis實現(xiàn)注冊及獲取Mapper

    本文主要介紹了MyBatis實現(xiàn)注冊及獲取Mapper,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • Java MyBatis-Plus之初始MyBatis

    Java MyBatis-Plus之初始MyBatis

    MyBatis-Plus是一個MyBatis的增強工具,在MyBatis的基礎(chǔ)上只做增強不做修改,為簡化開發(fā)、提高效率而生,本文給大家介紹MyBatis-Plus簡介和快速入門教程,需要的朋友參考下吧
    2021-10-10

最新評論