tag hashmap

標籤
貢獻24
94
01:59 AM · Nov 04 ,2025

@hashmap / 博客 RSS 訂閱

小碼code - 模擬HashMap衝突

最近看HashMap的源碼,其中相同下標容易產生hash衝突,但是調試需要發生hash衝突,本文模擬hash衝突。 hash衝突原理 HashMap衝突是key首先調用hash()方法: static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h 1

hashmap , JAVA

收藏 評論

今夜有點兒涼 - HashMap 常見面試題及其答案整理

以下是關於 HashMap 的常見面試題及其答案整理,涵蓋底層原理、使用場景和優化技巧 1. HashMap 的底層數據結構是什麼? 答案: JDK 1.8 之前:數組 + 鏈表(鏈表解決哈希衝突)。 JDK 1.8 及之後:數組 + 鏈表/紅黑樹(當鏈表長度 ≥8 且數組長度 ≥64 時,鏈表轉為紅黑樹,提高查詢效率)。 2. HashMap 的工作原理(put/g

紅黑樹 , hashmap , 數組 , 鏈表

收藏 評論

龔正陽 - rust使用hashmap存儲函數並調用

背景 在rust 1.67.1 (d5a82bbd2 2023-02-07) 版本測試正常 使用rust的hashmap存儲i32為key, 函數作為value, 當查詢某個key如果存在具體的函數則調用 支持異步函數存儲與調用 主要方法 如果類型不同,則需要包一層Box,把存儲的內容放到堆內存上,保證編譯器可以正常計算內存大小,主要是針對存儲在棧上的內存大小 如果是異步方法,由於異步函數沒

hashmap , rust , 異步

收藏 評論

JellyfishMIX - HashMap 源碼逐行分析,j + oldCap 桶位置重分配公式手寫驗證

説明 本文基於 jdk 8 編寫。 HashMap 的結構 圖中的數組是 table 屬性,hashMap 基礎的屬性。一個數組,用於承載 node,table 的每一個格被稱為桶。 node 是 hashMap 中基礎的 node 節點,用於存儲 key, value。 桶位置計算的公式是 (n - 1) hash,n 指 table 的長度,hash 指 key 的 hash 值。

hashmap , 數據結構 , hashmap的工作原理 , JAVA

收藏 評論

京東雲開發者 - 文盤Rust -- 生命週期問題引發的 static hashmap 鎖 | 京東雲技術團隊

2021年上半年,擼了個rust cli開發的框架,基本上把交互模式,子命令提示這些cli該有的常用功能做進去了。項目地址:https://github.com/jiashiwen/interactcli-rs。 春節以前看到axum已經0.4.x了,於是想看看能不能用rust做個服務端的框架。 春節後開始動手,在做的過程中會碰到各種有趣的問題。於是記下來想和社區的小夥伴一起分享。社區裏的小夥伴大

hashmap , static , , rust , cli

收藏 評論

大軍 - 大軍閒聊 -- 聊一聊hash

我們熟悉的hash結構,首先是一個數組元素的哈希桶,比如下圖,是長度為4的哈希桶。 也就是説,當key通過hash計算後,對4進行取模,根據結果存放這個指定位置。比如取模後值為0,那就放第一個位置。 哈希桶的每個位置,保存的是entry的對象,這個entry對象包括key、value以及entry對象。 這個速度是非常快的,時間複雜度是O(1),所以map的性能還是不錯的。 如果模數相等呢?我

hashmap , redis , jvm

收藏 評論

mob64ca140ee96c - JAVA8 HashMap詳解

為什麼要有HashMap數據結構 為了高效的執行數據插入和數據查找功能,在此之前就要提到鏈表和數組這兩種數據結構。 數組:查找輕鬆,但是插入和刪除複雜在最壞情況下時間複雜度為O(n)。 鏈表:插入刪除輕鬆,,但是查找麻煩,需要從頭結點逐個遍歷時間複雜度為O(n) 而hashmap實現了兩者的結合,查找輕鬆並且插入刪除也輕鬆的數據結

hashmap , hash , 數據結構 , 開發語言 , 後端開發 , JAVA , Python

收藏 評論

MageekChiu - eBPF HashMap 與 padding 的坑

前言 上一篇文章《ebpf-go 初體驗》中,我們提到了一個小插曲,就是當 map 的 key 這樣寫的時候 struct tuple key = {ip, bpf_ntohs(sport)},map 的 key 看起來會重複,有些令人詫異,於是我用另外一台機器 B 測了下(內核 6.6,clang 14.0.0)。發現了報錯:"invalid indirect read from stack R

bpf , hashmap , 編程技巧 , padding , c

收藏 評論

開翻挖掘機 - Java性能優化之影響性能的那些細節(二)

一、前言   Java性能優化之影響性能的那些細節 - 續來了。打算把這個標題整個系列文章,後面慢慢積累慢慢寫。這是第一篇入口。這次內容主要來源於《Java程序性能優化實戰》這本書,算是一份讀書筆記,感興趣的小夥伴可以閲讀下這本書。 二、List接口   先來看下這幾個List的類圖: ArrayList Vector LinkedList

性能優化 , hashmap , List , 數據結構 , JAVA

收藏 評論

cyl173 - 【後端面經-Java】HashMap詳解

1. HashMap的家族定位 接口java.util.Map有四個常用的實現類,如圖是它們之間的類繼承關係。 下面我將一一介紹其性能特點。 HashMap: 最常用的Map實現類,通過使用Hash表結構,提高查找速度; 使用鍵值對作為存儲節點,只允許一個key值為null,允許多個value值為null; 線程不安全,對於線程安全有要求的程序,可以考慮使

hashmap , 面試 , 源碼分析 , JAVA , 後端

收藏 評論

jacheut - 談談HashMap的一些問題

hashMap在多線程環境下的表現 在jdk1.7中多線程put時可能會導致get無限循環,具體表現為CPU使用率100%; 該方法實現的機制就是將每個鏈表轉化到新鏈表,並且鏈表中的位置發生反轉,而這在多線程情況下是很容易造成鏈表迴路,從而發生 get() 死循環。所以只要保證建新鏈時還是按照原來的順序的話就不會產生循環(JDK 8 的改進)。即在jdk1.7是採用的頭插法,在jdk1.8使

hashmap , JAVA

收藏 評論

高旭 - HashMap相關

1、JDK 8 HashMap為啥要引入紅黑樹? 當HashMap 的 key 衝突過多時,比如我們使用了不好的 hash 算法,導致key衝突率極高,鏈表裏會有很多數據。 但是鏈表的查找性能很差,所以引入紅黑樹是為了優化查詢性能。 2、JDK 8 HashMap為啥不直接用紅黑樹? 因為樹節點所佔用的空間是普通節點的兩倍,所以只有當節點足夠多的時候,才會使用樹節點。 也就是説,最開始

hashmap

收藏 評論

用户bPcHjCF - HashMap奪命14問,你能堅持到第幾問?

1. HashMap的底層數據結構是什麼? 在JDK1.7中和JDK1.8中有所區別: 在JDK1.7中,由”數組+鏈表“組成,數組是HashMap的主體,鏈表則是主要為了解決哈希衝突而存在的。 在JDK1.8中,有“數組+鏈表+紅黑樹”組成。當鏈表過長,則會嚴重影響HashMap的性能,紅黑樹搜索時間複雜度是O(logn),而鏈表是O(n)。因此,JDK1.8對數據結構做了進一步的優化,引入了

hashmap , JAVA

收藏 評論

IT可樂 - 為什麼HashMap的長度要是2的N次方?

文章目錄: ①、拋出問題 ②、給出結論 ③、論證問題 ④、 和 % 運算效率對比 相信對 JDK 源碼感興趣的小夥伴,HashMap 的源碼你一定不要錯過,裏面有很多精妙的設計,也是面試的常用考點,本文我會點出一些。 但是我不詳細介紹 HashMap 源碼,想了解的可以看我之前的文章,本篇文章主要是給大家解惑幾個問題。 1、拋出問題 1.1 為什麼 HashMap 的

hashmap , JDK , JAVA , 後端

收藏 評論

王嘉俊 - Java Map家族全面解析:從基礎到高階應用

Map家族 1、頂層接口:MapK,V 實現:定義了 鍵值對的存儲 的抽象接口 常用方法:put() get() remove() containsKey() entrySet() keySet() values() 底層:只是規範,並不關心具體數據結構 應用:統一API,讓不同實現類有相同的使用方式 作用:抽象層,解耦調用方與實現類 2、HashMap

hashmap , map , JAVA , 集合

收藏 評論

guonaihong - golang泛型實現--雙hash表

一、寫在前面 現代編程語言一般都提供了hash表的容器, 比如c++的std::hash_map, golang的map底層都使用了hash table, 是什麼魔法讓hash table在編程中佔有一席之地,下面的內容會慢慢揭曉這個答案。 二、hash表的組成 在聊hash表的實現,先問一個問題。對於數組的訪問可以使用索引,array[0], 就可以取得0索引的值, 取值的效率是O(1), 如果

hashmap , 數據結構 , hashtable , go

收藏 評論

lankeren - 遍歷 HashMap 的四種方式

1 分別遍歷 key 和 value 1 keySet() 獲取map中所有的 key 2 values() 獲取map中所有的 value 2 使用 Iterator 迭代器迭代 迭代器的遍歷: 先問後取 即 應當在確定hasNext()方法的返回值為true的情況下再通過next()方法取元素。 entrySet() 獲取map中所

鍵值對 , hashmap , foreach , iterator , JAVA

收藏 評論

北冥有隻魚 - 我們來聊聊HashMap吧

回憶起HashMap 概述HashMap 説到HashMap我腦中復現出下面這一個圖: 也就是hash算法、數組、鏈表、紅黑樹,我放入的key-value,根據hash算法會計算出來應該放置到數組的哪個位置上,如果出現了hash衝突,也就是hash算法映射出來的下標是一個,但是使用equals方法判斷不相等,那麼也就是出現了hash衝突,就會數組對應的位置形成鏈表,鏈表大於8個之後,轉為紅黑樹。

hashmap

收藏 評論

今夜有點兒涼 - HashMap,Java 8 後紅黑樹機制

在HashMap中,當發生哈希衝突且key不同時,追加到鏈表尾部或紅黑樹中的詳細機制如下: 1. 追加到鏈表尾部(Java 8之前) Java 8之前,HashMap使用「頭插法」將新節點插入到鏈表頭部 Java 8及以後,改為使用「尾插法」將新節點追加到鏈表尾部 這樣做的主要原因是避免在多線程環境下可能導致的鏈表成環問題,同時配合紅黑樹優化,使查詢性能更穩定 2. 紅黑樹轉換機制 當滿

hashmap

收藏 評論

瀟風寒月 - HashMap源碼解析

我的所有原創Android知識體系,已打包整理到GitHub.努力打造一系列適合初中高級工程師能夠看得懂的優質文章,歡迎star~ 1. 存儲結構 1.1 JDK 1.7 內部是以數組的形式存儲了Entry對象,而每個Entry對象裏面有key和value用來存值.它裏面包含了key、value、next、hash四個字段,其中next字段是用來引用下一個Entry的(相同的hash值會被放入同一

hashmap , 源碼 , hashmap的工作原理 , 源碼分析 , JAVA

收藏 評論

大數據王小皮 - 【Java基礎】HashMap 源碼探究

經常使用 Java 的 HashMap,但你有了解過其內部的實現原理麼?數據是如何存儲的?哈希衝突是如何處理的? 本篇文章將帶你深入源碼探究 HashMap 的實現原理。 文檔註釋 HashMap 是 Map 接口的實現類,實現了所有可選的操作,並且允許 null key 和 null value。(可以簡單的理解與 HashTable 功能相同,除了它是不同步的,以及支持空值。) 存

hashmap , 算法 , JAVA

收藏 評論

Apifox - Apifox 接口文檔「額外字段 HashMap」的校驗設置,簡單上手!

「額外字段」指的是那些未在接口文檔中明確定義的字段。出現「額外字段」的場景可能是因為業務進行了升級,導致接口返回的數據在原來的基礎上增加了一些新的字段,但是接口文檔中定義的數據結構尚未做相應的更新,這就出現了接口返回數據與文檔定義之間的不匹配問題。 針對這種情況,Apifox 最新版本提供了一項功能,允許用户自定義設置對「額外字段」的校驗響應。這意味着你可以選擇在遇到「額外字段」時是否接收提示,從

hashmap , API , api文檔 , hashmap的工作原理 , 接口文檔

收藏 評論

扣釘日記 - Java8中那些方便又實用的Map函數

原創:扣釘日記(微信公眾號ID:codelogs),歡迎分享,轉載請保留出處。 簡介 java8之後,常用的Map接口中添加了一些非常實用的函數,可以大大簡化一些特定場景的代碼編寫,提升代碼可讀性,一起來看看吧。 computeIfAbsent函數 比如,很多時候我們需要對數據進行分組,變成MapInteger, List?的形式,在java8之前,一般如下實現: ListPayment paym

hashmap , JAVA , 後端

收藏 評論

一無是處的研究僧 - HashMap源碼深度剖析,手把手帶你分析每一行代碼,包會!!!

HashMap源碼深度剖析,手把手帶你分析每一行代碼! 在前面的兩篇文章哈希表的原理和200行代碼帶你寫自己的HashMap(如果你閲讀這篇文章感覺有點困難,可以先閲讀這兩篇文章)當中我們仔細談到了哈希表的原理並且自己動手使用線性探測法實現了我們自己的哈希表MyHashMap。在本篇文章當中我們將仔細分析JDK當中HashMap的源代碼。 首先我們需要了解的是一個容器最重要的四個功能 增刪改查 ,

hashmap , 數據結構 , 算法 , 哈希表 , hashmap的工作原理

收藏 評論