如何向老婆解釋HashMap

微信公衆號:[老張聊天]
又穩又重的老碼農,分享工作生活經驗。
風趣幽默的段子手,總結編程專業知識。
希望能用通俗易懂的語言,給小夥伴帶來收穫~
[如果覺得對您有幫助,歡迎關注,轉發,點贊!]

一、看視頻最好帶耳機

晚上在家看視頻學習中,開了外放,剛好在講HashMap,老婆在旁邊問道:“HashMap是啥?”

大腦中飛速閃過,前陣子看過另外一篇文章《如何向老婆解釋RPC》,文章中作者怕老婆聽不懂責罰自己刷碗,很巧妙的用了比喻方式,給老婆解釋清楚RPC,最後確難逃刷碗命運的悲慘故事。

當時我還特意給老婆分享了這篇文章,沒想到她今天學以致用了。。致用了。用了。了。

沉默2秒後…

“我先去刷碗,回來給你講講什麼是HashMap!”

二、刷碗回來後

“HashMap ,好比學校的一棟宿舍樓,給學生提供住宿用。假如你是學校領導,你要怎麼安排學生住宿呢?”我問老婆。

“那簡單,一個房間安排8個人,滿了就繼續安排下一個房間。”老婆回答道。

“那怎麼從一堆學生中,挑選8個出來,安排到同一個房間呢?”我追問。

“我那個時候是相同專業,按照報道時間的先後順序來的。”老婆答道。

“我要提升難度咯,給你加一些限制條件,再看看你怎麼安排?”我的語氣中帶着一點小計謀得逞的得意。
“放馬過來!”老婆還未發現我的陰謀。

三、小陰謀開始

“1、每個房間住的人數不固定。”
“2、你不知道總共有多少學生,只知道有16間宿舍。”
“3、每間宿舍人數儘量平均,不能說一個宿舍空着,另一個宿舍住了5,6個人。”

老婆聽完後,臉色開始轉變,開始轉移話題,“哪裏有這麼好的學校?”

我看氣氛有些不對,趕緊降低了難度,“給你提個醒啊,比如,每個人的出生月份不一樣,我們可以按照月份,1月出生的安排到一起,2月出生的安排到一起。但是一年12個月,這樣會空了4個房間。你看要怎麼改善下呢?”

“可以按日子來算啊,1號出生的住一起,2號出生的住一起…17號出生的可以和1號一起住,以此類推啊,你看我是不是很聰明?”

“對對對,是是是。”我趕緊恭維道。
“不過,這種分配方法還是有一些問題,第16間宿舍相比其他肯定寬敞,畢竟一個月份沒有32天。”

“那你說咋辦?”老婆語氣開始轉變了。

四、適可而止

我的腦海裏閃過計算機中的二進制,位運算,補碼,反碼,高低位…不行,範圍鋪太廣解釋不清了,不能給自己挖坑。

“代碼程序可以做到啊,其實咱們根據學生信息,算出來住哪間宿舍的過程,就是做Hash運算的意思啦。不過程序裏面實現的機制比較複雜,都是爲了不讓學生住的那麼擠。”我趕緊開始總結。

“要真有這麼好的學校領導,就好了。我們那個時候8個人擠一個屋子,然後…”老婆開始回想學生時代的苦日子,我趕緊附和道“這麼慘?太難了!真的嗎?這樣啊,然後呢?”

我的腦海裏卻繼續蹦出來更多的專業名詞,閾值,擴容,轉移,rehash,單雙向鏈表,紅黑樹,併發,unsafe,CAS,各種鎖…

想起家裏地還沒有拖,還好我適可而止了。。

寫在尾聲

五一假期要結束了,感謝大家閱讀支持。
後面節假日不加班的話,開始更新程序猿學習系列一。
《老張帶你看源碼》敬請期待~

感謝大家的閱讀,歡迎大家長按二維碼關注,私信交流,轉發,點在看,謝謝!

歡迎掃碼關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章