Key值既然能夠做爲對象,那麼也能夠用一個自定義的類。好比:數組
m.put(new sutdent(「Liucy」,30),」boss」)安全
若是沒有語句來斷定Student類對象是否相同,則會所有打印出來。併發
當咱們用自定義的類對象做爲key時,咱們必須在程序中覆蓋HashCode()和equals()。對象
注:HashMap底層也是用數組,HashSet底層實際上也是HashMap,HashSet類中有HashMap屬性(咱們如何在API中查屬性)。HashSet實際上爲(key.null)類型的HashMap。有key值而沒有value值。排序
正由於以上的緣由,TreeSet和TreeMap的實現也有些相似的關係。資源
注意:TreeSet和TreeMap很是的消耗時間,所以不多使用。table
咱們應該熟悉各類實現類的選擇——很是體現你的功底。List
HashSet VS TreeSet:HashSet很是的消耗空間,TreeSet由於有排序功能,所以資源消耗很是的高,咱們應該儘可能少使用,並且最好不要重複使用。程序
基於以上緣由,咱們儘量的運用HashSet而不用TreeSet,除非必須排序。tab
同理:HashMap VS TreeMap:通常使用HashMap,排序的時候使用TreeMap。
HashMap VS Hashtable(注意在這裏table的第一個字母小寫)之間的區別有些相似於ArrayList和Vector,Hashtable是重量級的組件,在考慮併發的狀況,對安全性要求比較高的時候使用。
Map的運用很是的多。