Java后端開發day36--源碼解析:HashMap

請添加圖片描述
(以下內容均來自上述課程)
在這里插入圖片描述

1. HashMap(一)

底層:數組+鏈表+紅黑樹

1.1 前提準備

查看源碼:選中HashMap–ctrl+B
小細節:快捷鍵ctrl+f12–跳出目錄結構

  • 藍色圓圈:class 證明是類名
  • 粉色圓圈: method 證明是方法
  • 方法名和類名相同就證明是構造方法
  • 方法名和類名不相同就證明是普通的成員方法
  • 組成:粉色圓圈+方法名+括號內形參+:后返回值+灰色箭頭
  • 灰色箭頭:??:重寫父類或者接口中的方法 + 父類或接口的名稱
  • 灰色箭頭:??:如果方法本身就是灰色就會出現右箭頭,表示直接繼承箭頭后面的方法,會直接跳轉到后面的方法

請添加圖片描述

  • 黃色圓圈:field 表示類的屬性:成員變量或者常量
  • 綠色圓圈:interface 表示接口
  • 再往下的藍色圓圈:大類(HashMap)中的內部類

請添加圖片描述

1.2 Node節點—>鏈表

請添加圖片描述

1.3 TreeNode---->紅黑樹

請添加圖片描述

1.4 table---->數組

里面裝的元素就是Node的對象
請添加圖片描述
數組長度:默認16
加載因子:默認0.75
請添加圖片描述

1.5 構造方法

1.5.1 空參構造–>加載因子0.75

此時底層數組還沒有創建,
請添加圖片描述
添加元素時,數組才會被創建。
形參:哈希值,鍵,值,當前數據是否保留(false是覆蓋不保留),不重要
請添加圖片描述
請添加圖片描述

2. HashMap(二)

請添加圖片描述
數組內部的鍵值對對象分為兩種情況:鏈表或者紅黑樹

2.1 添加對象

請添加圖片描述

2.1.1 put方法(添加元素)源碼

請添加圖片描述
牽連到下述:

2.1.2 哈希值

請添加圖片描述

2.1.3 putVal方法源碼

變量:
請添加圖片描述
語句:
請添加圖片描述
變量:
請添加圖片描述

(1) 添加第一個元素的過程:數組位置為null

請添加圖片描述
請添加圖片描述

(2) 添加其他的元素

請添加圖片描述

(2.1) 數組的位置不為null,鍵不重復,掛在下面形成鏈表或者紅黑樹

在這里插入圖片描述

請添加圖片描述
請添加圖片描述

(2.2)數組的位置不為null,鍵重復,元素覆蓋

請添加圖片描述
444被覆蓋為555,只修改了數據
請添加圖片描述
請添加圖片描述

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

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

相關文章

RT-Thread學習筆記(四)

RT-Thread學習筆記 線程間同步信號量信號量的使用和管理動態創建信號量靜態創建信號量獲取信號量信號量同步實列互斥量互斥量的使用和管理互斥量動態創建互斥量靜態創建互斥量獲取和釋放互斥量實例事件集事件集的使用和管理動態創建事件集靜態初始化事件集發送和接收事件事件集…

element ui el-col的高度不一致導致換行

問題:ell-col的高度不一致導致換行,刷新后審查el-col的高度一致 我這邊是el-col寫的span超過了24,自行換行,測試發現初次進入里面的高度渲染的不一致,有的是51px有的是51.5px 問題原因分析 Flex布局換行機制 Elemen…

現代化Android開發:Compose提示信息的最佳封裝方案

在 Android 開發中,良好的用戶反饋機制至關重要。Jetpack Compose 提供了現代化的 UI 構建方式,但提示信息(Toast/Snackbar)的管理往往顯得分散。本文將介紹如何優雅地封裝提示信息,提升代碼可維護性。 一、基礎封裝方案 1. 簡單 Snackbar …

【C++語法】類和對象(2)

4.類和對象(2) 文章目錄 4.類和對象(2)類的六個默認成員函數(1)構造函數:構造函數特點含有缺省參數的構造函數構造函數特點(續)注意事項構造函數補充 前面總結了有關對象概念,對比 C…

【自然語言處理與大模型】vLLM部署本地大模型②

舉例上一篇文章已經過去了幾個月,大模型領域風云變幻,之前的vLLM安裝稍有過時,這里補充一個快速安裝教程: # 第一步:創建虛擬環境并激活進入 conda create -n vllm-0.8.4 python3.10 -y conda activate vllm-0…

26 Arcgis軟件常用工具有哪些

一、畫圖改圖工具(矢量編輯)? ?挪位置工具(移動工具)? 干哈的??選中要素?(比如地塊、道路)直接拖到新位置,或者用坐標?X/Y偏移?批量移動,適合“整體搬家”。 ?磁…

QNX/LINUX/Android系統動態配置動態庫.so文件日志打印級別的方法

背景 通常我們會在量產的產品上,配置軟件僅打印少量日志,以提升產品的運行性能。同時我們要考慮預留方法讓軟件能夠擁有能力可以在燒錄版本后能夠通過修改默寫配置,打印更多日志。因為量產后的軟件通常開啟熔斷與加密,不能夠輕松…

WebGL圖形編程實戰【4】:光影交織 × 逐片元光照與渲染技巧

現實世界中的物體被光線照射時,會反射一部分光。只有當反射光線進人你的眼睛時,你才能夠看到物體并辯認出它的顏色。 光源類型 平行光(Directional Light):光線是相互平行的,平行光具有方向。平行光可以看…

【Hive入門】Hive基礎操作與SQL語法:DDL操作全面指南

目錄 1 Hive DDL操作概述 2 數據庫操作全流程 2.1 創建數據庫 2.2 查看數據庫 2.3 使用數據庫 2.4 修改數據庫 2.5 刪除數據庫 3 表操作全流程 3.1 創建表 3.2 查看表信息 3.3 修改表 3.4 刪除表 4 分區與分桶操作 4.1 分區操作流程 4.2 分桶操作 5 最佳實踐與…

YOLO數據處理

YOLO(You Only Look Once)的數據處理流程是為了解決目標檢測領域的核心挑戰,核心目標是為模型訓練和推理提供高效、規范化的數據輸入。其設計方法系統性地解決了以下關鍵問題,并對應發展了成熟的技術方案: 一、解決的問…

Ubuntu-Linux中vi / vim編輯文件,保存并退出

1.打開文件 vi / vim 文件名(例: vim word.txt )。 若權限不夠,則在前方添加 sudo (例:sudo vim word.txt )來增加權限; 2.進入文件,按 i 鍵進入編輯模式。 3.編輯結…

PCL繪制點云+法線

讀取的點云ASCII碼文件&#xff0c;每行6個數據&#xff0c;3維坐標3維法向 #include <iostream> #include <fstream> #include <vector> #include <string> #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pc…

如何在學習通快速輸入答案(網頁版),其他學習平臺通用,手機上快速粘貼

目錄 1、網頁版&#xff08;全平臺通用&#xff09; 2、手機版&#xff08;學習通&#xff0c;其他平臺有可能使用&#xff09; 1、網頁版&#xff08;全平臺通用&#xff09; 1、首先CtrlC復制好答案 2、在學習通的作業里輸入1 3、對準1&#xff0c;然后鼠標右鍵 &#xff…

002 六自由度舵機機械臂——姿態解算理論

00 DH模型的核心概念 【全程干貨【六軸機械臂正逆解計算及仿真示例】】 如何實現機械臂的逆解計算-機器譜-robotway DH模型是機器人運動學建模的基礎方法&#xff0c;通過??四個參數??描述相鄰關節坐標系之間的變換關系。其核心思想是將復雜的空間位姿轉換分解為繞軸旋轉…

pymongo功能整理與基礎操作類

以下是 Python 與 PyMongo 的完整功能整理&#xff0c;涵蓋基礎操作、高級功能、性能優化及常見應用場景&#xff1a; 1. 安裝與連接 (1) 安裝 PyMongo pip install pymongo(2) 連接 MongoDB from pymongo import MongoClient# 基礎連接&#xff08;默認本地&#xff0c;端口…

Trae+DeepSeek學習Python開發MVC框架程序筆記(四):使用sqlite存儲查詢并驗證用戶名和密碼

繼續通過Trae向DeepSeek發問并修改程序&#xff0c;實現程序運行時生成數據庫&#xff0c;用戶在系統登錄頁面輸入用戶名和密碼后&#xff0c;控制器通過模型查詢用戶數據庫表來驗證用戶名和密碼&#xff0c;驗證通過后顯示登錄成功頁面&#xff0c;驗證失敗則顯示登錄失敗頁面…

如何識別金融欺詐行為并進行分析預警

金融行業以其高效便捷的服務深刻改變了人們的生活方式。然而,伴隨技術進步而來的,是金融欺詐行為的日益猖獗。從信用卡盜刷到復雜的龐氏騙局,再到網絡釣魚和洗錢活動,金融欺詐的形式層出不窮,其規模和影響也在不斷擴大。根據全球反欺詐組織(ACFE)的最新報告,僅2022年,…

紛析云:開源財務管理軟件的創新與價值

在企業數字化轉型中&#xff0c;紛析云作為一款優秀的開源財務管理軟件&#xff0c;正為企業財務管理帶來新變革&#xff0c;以下是其核心要點。 一、產品概述與技術架構 紛析云采用微服務架構&#xff0c;功能組件高內聚低耦合&#xff0c;可靈活擴展和定制。前端基于現代框…

蛋白質大語言模型ESM介紹

ESM(Evolutionary Scale Modeling)是 Meta AI Research 團隊開發的一系列用于蛋白質的預訓練語言模型。這些模型在蛋白質結構預測、功能預測和蛋白質設計等領域展現出了強大的能力。以下是對 ESM 的詳細介紹: 核心特點 大規模預訓練:基于大規模蛋白質序列數據進行無監督學…

OpenCv高階(七)——圖像拼接

目錄 一、圖像拼接的原理過程 1. 特征檢測與描述&#xff08;Feature Detection & Description&#xff09; 2. 特征匹配&#xff08;Feature Matching&#xff09; 3. 圖像配準&#xff08;Image Registration&#xff09; 4. 圖像變換與投影&#xff08;Warping&…