程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> hash,hash怎麼用

hash,hash怎麼用

編輯:JAVA綜合教程

hash,hash怎麼用


學習需要系統,但是系統的學習是自己完善而得來的。

不依托業務,不切合工作,不實踐的學習,都是無效的學習。因此我的博客是這樣的:不會專門寫XXX系列,而是想到什麼或者工作用到什麼,就寫點什麼。

因為,今天下班的時候,從公司走回住的地方,和逗逼同事無聊的聊了很久。所以,今天來寫點關於:hash的話題吧。
(就是這麼任性,想到什麼就寫什麼。這個因為和所以,沒有半毛錢關系。哈哈……)

object 中的 hashcode(),是內存地址的映射(不嚴謹,但是好記,唯一性)。equals(),比較的是對象的內存地址映射是否相等。

原則:如果兩個對象相等,那麼兩個對象的hashcode也應當相等。因此,重寫equals,就必須重寫hashcode。

hash相關的Java API,hashMap,hashSet等散列集合內部會建立自己的hash鏈,該hash鏈,用於索引對應hash集合,使遍歷更加高效。

如果對象的equals相等,而hashcode不相等,那麼散列集合在增、刪、改元素時,就會出錯。

原因為(以刪為例子):刪除散列集合中的元素,

  1:對元素進行hashcode計算。

  2:用得到的hashcode在散列集合索引鏈中進行查找(非遍歷式,而是匹配式,智能到索引中相近的地方進行對比)

  3:對象的equals相等,而hashcode不相等,那麼就無法完成刪除動作。造成內存洩漏。

剩余部分,你懂的。

 

歡迎扔磚,指正。謝謝~

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved