Arraylist和linkedlist的區別,hashmap和hashtable的區別,hashmap和hashset的相同與不同,hashcode的用法
阿新 • • 發佈:2018-12-25
Arraylist和linkedlist的區別
相當於陣列和連結串列的區別:當arraylist中新增物件時對應的陣列長度就要改變,因此便於查詢(直接get(i)就ok)而不利於增刪改;相反linkedlist相當於連結串列可以進行增刪改,但是查詢要從第一個節點開始會浪費時間。
hashmap和hashtable的區別
a.hashmap實現了map介面,而hashtable繼承了Dictionary類。b。hashtable是同步的,而hashmap不同步,這就意味著多執行緒中呼叫hashmap不能實現同步,但是利用Collection類中的靜態方法synochronizedMap()可以建立map物件,這樣就可以呼叫hashmap了,所以對於單執行緒還是多執行緒hashmap都可以勝任而對於hashtable用在單執行緒就有點大材小用了,增加費用。因此大多數存線上程同步的話用hashtable,其他情況下使用hashmap
hashmap和hashset的相同與不同
hashmap一一對應,是有序的集合所以查詢起來比較快而hashset是隻顯示key值hashmap,是一個集合,是無序的,因此查詢很慢,且不能重複新增。
hashcode的用法
相當於物件的一個二進位制編碼,比較兩個物件是否相等,這也保證hashmap中的key值是唯一的 與equals的區別:equals重寫可以判斷內容是否相等返回布林型,而hashcode返回int型,想要判斷2個物件物理相等用==