JAVA中hashmap的分析

來源:互聯網
上載者:User

標籤:相等   size   UI   存在   是什麼   避免   編程開發   內容   如何使用   

從http://blog.csdn.net/luanlouis/article/details/41576373?utm_source=tuicool&utm_medium=referral 學習到了java中hashmap的內部原理,非常不錯的文章,非常感謝作者的奉獻.以下為主要內容摘錄.

java/scala/c# 語言之中,class 都會含有hashcode,equals之類的方法,這是為什麼?
數組和鏈表的區別是什麼?在編程開發中應該如何使用?
在HashMap內部,採用了數組+鏈表的形式來組織索引值對Entry<Key,Value>。
HashMap內部維護了一個Entry[] table 數組,當我們使用 new HashMap()建立一個HashMap時,Entry[] table 的預設長度為16。Entry[] table的長度又被稱為這個HashMap的容量(capacity);
對於Entry[] table的每一個元素而言,或為null,或為由若干個Entry<Key,Value>組成的鏈表。HashMap中Entry<Key,Value>的數目被稱為HashMap的大小(size);
Entry[] table中的某一個元素及其對應的Entry<Key,Value>又被稱為桶(bucket);    
HashMap內部實現原理是什麼?有關hashcode,它是使用數組加鏈表的資料結構的一個經典使用.
Entry<key,value> ,bucket,loadfactor
size>capacity*loadfactor(0.75) then capacity*2
為了提高HashMap的效能:
1.在使用HashMap的過程中,你比較明確它要容納多少Entry<Key,Value>,你應該在建立HashMap的時候直接指定它的容量;
2. 如果你確定HashMap的使用的過程中,大小會非常大,那麼你應該控制好 載入因子的大小,盡量將它設定得大些。避免Entry[] table過大,而利用率覺很低。
HashMap在確定Key是否在HashMap中存在的要求有兩個:
1. Key值是否相等;
2. hashcode是否相等;
所以我們在定義類時,如果重寫了equals()方法,但是hashcode卻沒有保證相等,就會導致當使用該類執行個體作為Key值放入HashMap中,會出現HashMap“工作異常”的問題,會出現你不希望的情況。
1. HashMap是線程不安全的,如果想使用安全執行緒的,可以使用Hashtable;它提供的功能和Hashmap基本一致。HashMap實際上是一個Hashtable的輕量級實現;
2. 允許以Key為null的形式儲存<null,Value>索引值對;
3. HashMap的尋找效率非常高,因為它使用Hash表對進行尋找,可直接定位到Key值所在的桶中;
4. 使用HashMap時,要注意HashMap容量和載入因子的關係,這將直接影響到HashMap的效能問題。載入因子過小,會提高HashMap的尋找效率,但同時也消耗了大量的記憶體空間,載入因子過大,節省了空間,但是會導致HashMap的尋找效率降低。
               

JAVA中hashmap的分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.