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