當咱們用自定義的類對象做爲key時,咱們必須在程序中覆蓋HashCode()和equals()。

Key值既然能夠做爲對象,那麼也能夠用一個自定義的類。好比:數組

m.put(new sutdent(「Liucy」,30),」boss」)安全

若是沒有語句來斷定Student類對象是否相同,則會所有打印出來。併發

 

當咱們用自定義的類對象做爲key時,咱們必須在程序中覆蓋HashCode()equals()對象

 

注:HashMap底層也是用數組,HashSet底層實際上也是HashMapHashSet類中有HashMap屬性(咱們如何在API中查屬性)。HashSet實際上爲(key.null)類型的HashMap。有key值而沒有value值。排序

 

正由於以上的緣由,TreeSetTreeMap的實現也有些相似的關係。資源

注意:TreeSetTreeMap很是的消耗時間,所以不多使用。table

咱們應該熟悉各類實現類的選擇——很是體現你的功底。List

 

HashSet VS TreeSetHashSet很是的消耗空間,TreeSet由於有排序功能,所以資源消耗很是的高,咱們應該儘可能少使用,並且最好不要重複使用。程序

基於以上緣由,咱們儘量的運用HashSet而不用TreeSet,除非必須排序。tab

同理:HashMap  VS  TreeMap:通常使用HashMap,排序的時候使用TreeMap

HashMap VS Hashtable(注意在這裏table的第一個字母小寫)之間的區別有些相似於ArrayListVectorHashtable是重量級的組件,在考慮併發的狀況,對安全性要求比較高的時候使用。

 

Map的運用很是的多。

相關文章
相關標籤/搜索