關于集合的底層數據結構

單列集合Collection分為list集合和set集合

list集合分為ArrayList和LinkedList

ArrayList--底層數據結構是數組

1.通過索引查詢快

2.增刪要重構索引,增刪慢 ??

LinkedList--底層數據結構是鏈表

1.無索引查詢慢

2.通過改變前節點的尾指針和后節點的前指針指向可快速增刪,增刪快

set集合(不可重復,沒有索引,迭代器遍歷)分為HashSet和TreeSet

HashSet存儲數據原理-數組加鏈表/數組加紅黑樹,數組內存連續查詢效率高,鏈表內存分散增刪改效率高,哈希表的默認長度是16,超過這個長度時開始進行擴容(數組長度乘2),當鏈表節點個數大于8時鏈表會轉化為紅黑樹,哈希表采用此種存儲數據的形式極大的提高操作數據的效率

1.存儲數據時會先操作(元素值作Key)key調用.hashcode()方法得出hash值,然后再通過哈希算法轉換成數組的一個下標,對應的就是在數組上的的存儲位置。

2.如果該位置沒有數據,則直接存儲。如果該位置有數據,則會發生數據碰撞。數據碰撞的時候遍歷該位置上鏈表中的所有數據,并且通過equals()方法來比對每個數據的key。如果key相同的話,會將鏈表上該位置的數據進行覆蓋。如果key不相同的話,在JDK1.8之前是實行的頭插法,數據存儲在鏈表頭部,1.8之后實行的是尾插法數據存儲在鏈表尾部。

3.JDK1.8之后,當鏈表上的節點個數(數據個數)大于等于8時并且數組長度不小于64的時候,鏈表數據結構自動進行樹化轉化成紅黑樹,當鏈表上的數據小于等于6時,又會自動退化成鏈表,當鏈表上的數據大于64時會進行擴容

TreeSet存儲數據原理-紅黑樹

紅黑樹是一種自平衡二叉查找樹,它具有以下特點:

1.紅黑樹規則

每個節點要么是紅色,要么是黑色。

根節點是黑色的。

所有葉子節點(NULL節點)是黑色的。

如果一個節點是紅色的,那么它的子節點必須是黑色的。

從根節點到每個葉子節點的路徑上,黑色節點的數量相同。

2.紅黑樹添加節點規則

紅黑樹添加節點默認是紅色的,添加的是根節點自動變黑。添加的是非根節點位置看父節點,父黑,不操作,父紅,叔紅,父叔變黑,祖父變紅,若祖父為根節點,變黑。添加的是非根節點位置看父節點,父黑,不操作,父紅,叔黑,父變黑,祖父變紅,以祖父為節點進行旋轉平衡二叉樹要通過選擇保持平衡,增刪效率低,紅黑樹不用通過大量的旋轉來維持平衡,所以增加了增刪效率

雙列集合Map

1.HashMap存儲數據原理-數組加鏈表/數組加紅黑樹

2.TreeMap存儲數據原理-紅黑樹

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90002.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

批量插入技巧:減少事務提交次數的性能提升

一、事務提交成本分析每次事務提交觸發?磁盤I/O同步?(WAL機制)、?日志寫入?和?鎖資源釋放?操作,高頻獨立提交會產生指數級開銷?。實驗表明:MySQL提交1萬次單條插入比單次批量插入?慢20倍以上??。高頻提交還加劇鎖競爭與…

importlib.import_module() 的用法與實戰案例

🌟 一、什么是 importlib? importlib 是 Python 的一個內置標準庫,用于在程序運行時 動態導入模塊。 🔤 對比:普通 import vs importlib方式示例特點靜態導入import os編寫代碼時就確定要導入的模塊動態導入importlib.…

Oracle 12c 創建數據庫初級教程

1. 連接到Oracle sqlplus / as sysdba Oracle數據庫名稱默認為ORCL或sqlplus /ORCL as sysdba Oracle數據庫名稱默認為ORCL2. 創建表空間(數據庫) create user YOUR_USERNAME identified by "YOUR_PASSWORD"; YOUR_USERNAME為數據庫名稱和登…

zabbix服務器告警處理

zabbix服務器告警,信息為:Utilization of poller processes over 75%處理辦法為修改zabbix_server.conf配置文件,一般情況下為/etc/zabbix目錄下。根據自己輪詢器的類型修改對應的輪詢器的數量;我這里把StartPollers,S…

隨筆20250721 PostgreSQL實體類生成器

我來幫你創建一個C#程序,從PostgreSQL數據庫讀取表結構并生成對應的實體類文件。我已經創建了一個完整的PostgreSQL實體類生成器。這個程序包含以下主要功能:主要特性數據庫連接: 使用Npgsql連接PostgreSQL數據庫表結構讀取: 自動讀取所有表的結構信息類…

B樹、B-樹與B+樹

B樹、B-tree與B樹 在計算機科學,尤其是數據庫和文件系統的領域中,B樹、B-tree和B樹是理解數據如何被高效存儲和檢索的關鍵。它們之間關系緊密,但功能和應用上又存在著決定性的差異。 一、 核心概念澄清:B樹就是B-tree 首先需要明確…

視頻格式轉換工廠v3.2.5,集音視頻、圖片處理78MB

今天,我們要介紹的是一款功能強大的視頻處理軟件——視頻格式轉換工廠。這款軟件已經完美破解,無需登錄即可享受全部高級功能。它不僅支持視頻格式轉換,還涵蓋了音頻、圖片處理等多種功能,是一款真正的多媒體處理工具。 視頻格式轉…

VUE 中父級組件使用JSON.stringify 序列化子組件傳遞循環引用錯誤

背景 VUE 中父級組件使用JSON.stringify 序列化子組件傳遞的數據會報錯 runtime-core.esm-bundler.js:268 Uncaught TypeError: Converting circular structure to JSON –> starting at object with constructor ‘Object’ — property ‘config’ closes the circle 原因…

HTTP,HTTPS

在網絡工程師、開發工程師、運維工程師等崗位的面試中,??HTTP/HTTPS?? 是高頻必考知識點,尤其在前端、后端、測試、DevOps等與網絡通信相關的職位中。以下是系統化的核心考點梳理,涵蓋基礎概念、協議機制、安全特性及應聘高頻問題。??一…

Nginx訪問日志分析在云服務器環境的技術實現與案例

在云計算時代,Nginx訪問日志分析已成為服務器運維的關鍵環節。本文將深入解析如何通過日志切割、實時監控和可視化展示三大技術路徑,實現云環境下Nginx日志的高效分析。我們將結合具體案例,演示從原始日志到運維決策的完整技術閉環&#xff0…

鴻蒙實現一次上傳多張圖片

記錄初接觸鴻蒙,遇到的一個問題,需求是點擊一個圖片上傳的號圖,訪問本地圖片,可以選擇多張圖片并上傳。下面是圖片上傳后的方法://選擇圖片并上傳private async showPhotoPicker() {const maxImageCount 3;const rema…

【STM32】CRC 校驗函數

先上一下 CRC校驗 的源代碼&#xff1a; void crc_check(unsigned char *ptr,unsigned int len) //crc為開源函數 {unsigned long wcrc0XFFFF;//預置16位crc寄存器&#xff0c;初值全部為1unsigned char temp;//定義中間變量int i0,j0;//定義計數for(i0;i<len;i)//循環計算每…

【Java】SVN 版本控制軟件的快速安裝(可視化)

目錄 一、SVN 的概述 1.1 SVN 的概念 1.2 SVN 與 Git 的對比 1.3 SVN 軟件 二、SVN 的安裝 2.1 SVN 的工作流程 2.2 服務器端 SVN 的安裝 三、SVN 服務器端的配置 3.1 搭建項目 3.2 權限控制 四、SVN 客戶端的配置 4.1 SVN 客戶端的下載 4.2 客戶端連接 SVN 服務器…

Hadoop安全機制深度剖析:Kerberos認證與HDFS ACL細粒度權限控制

Hadoop安全機制概述在大數據時代&#xff0c;Hadoop作為分布式計算框架的核心組件&#xff0c;其安全性直接關系到企業數據資產的保護。隨著數據價值的不斷提升&#xff0c;Hadoop安全機制已從早期的"簡單信任模式"演進為包含多重防護措施的綜合體系&#xff0c;其重…

uniapp基本使用

資料 咸蝦米視頻 黑馬視頻 uniapp官方文檔 hbuilder 1.uniapp頁面生命周期 1.1 onLoad 還拿不到dom適合接受上頁的參數&#xff0c;聯網取數據&#xff0c;更新data。相當于created和beforeCreated期間主要的作用是比如說獲取url上的query參數 *url: ***/**?name張三&…

ssh2-sftp-client 簡化 sftp 文件傳輸的 node庫

ssh2-sftp-client 極大地簡化了通過 sftp 進行文件傳輸的復雜性。無論你是需要上傳、下載、刪除文件&#xff0c;還是列出目錄內容&#xff0c;可當簡易的部署腳步npm run deploy const SftpClient require(ssh2-sftp-client) const sftp new SftpClient()const config {hos…

數字美元與全球支付革命:穩定幣的興起與全球金融格局的重塑

一、數字美元的崛起&#xff1a;美國戰略布局與全球競爭1. 數字美元的定位與戰略意義 數字美元作為美國構建“數字美元帝國”的核心工具&#xff0c;旨在通過區塊鏈技術實現美元的數字化發行與流通&#xff0c;鞏固其全球儲備貨幣地位。其核心邏輯在于&#xff1a;技術賦能貨幣…

LeetCode 633.平方數之和

給定一個非負整數 c &#xff0c;你要判斷是否存在兩個整數 a 和 b&#xff0c;使得 a2 b2 c 。 示例 1&#xff1a; 輸入&#xff1a;c 5 輸出&#xff1a;true 解釋&#xff1a;1 * 1 2 * 2 5 示例 2&#xff1a; 輸入&#xff1a;c 3 輸出&#xff1a;false 提示&…

Spring Boot 使用Jasypt加密

一、配置Jasypt 1.在pom.xml中導入依賴 <!-- Jasypt 加密工具 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version></dependency&…

【電影剖析】千鈞一發

目錄 1 人物介紹 2 電影名解讀 3 電影開頭 3.1 電影開頭的兩段話 3.2 片頭設計 4 電影正文 4.1 “杰羅米”各種詭異的行為 4.2 文森特 – 失敗的man 4.3 真正的杰羅米以及假基因身份證 4.4 文森特新征程 4.5 基因人的不容易 4.6 睫毛被查出有問題 4.7 文森特身份初…