1. 程式人生 > >HashSet與HashMap的區別,你知道嗎?

HashSet與HashMap的區別,你知道嗎?

集合 有一個 只需要 .com 鏈表 AI 就是 功能 compare

    • 摘要:HashSet是通過HashMap實現的,TreeSet是通過TreeMap實現的,只不過Set用的只是Map的key Map的key和Set都有一個共同的特性就是集合的唯一性.TreeMap更是多了一個排序的功能. hashCode和equal()是HashMap用的,因為無需排序所以只需要關註定位和唯一性即可. a.hashCode是用來計算hash值的,hash值是用來確定hash表索引的. b.hash表
      1. HashSet是通過HashMap實現的,TreeSet是通過TreeMap實現的,只不過Set用的只是Map的key
      2. Map的key和Set都有一個共同的特性就是集合的唯一性.TreeMap更是多了一個排序的功能.
      3. hashCode和equal()是HashMap用的, 因為無需排序所以只需要關註定位和唯一性即可.
        a. hashCode是用來計算hash值的,hash值是用來確定hash表索引的.
        b. hash表中的一個索引處存放的是一張鏈表, 所以還要通過equal方法循環比較鏈上的每一個對象
        才可以真正定位到鍵值對應的Entry.
        c. put時,如果hash表中沒定位到,就在鏈表前加一個Entry,如果定位到了,則更換Entry中的value,並返回舊value
      4. 由於TreeMap需要排序,所以需要一個Comparator為鍵值進行大小比較.當然也是用Comparator定位的.
        a. Comparator可以在創建TreeMap時指定
        b. 如果創建時沒有確定,那麽就會使用key.compareTo()方法,這就要求key必須實現Comparable接口.
        c. TreeMap是使用Tree數據結構實現的,所以使用compare接口就可以完成定位了.

HashSet與HashMap的區別,你知道嗎?