hashmap和arraylist的區別

ArrayList和HashMap是異步的,Vector和HashTable是同步的,因此Vector和HashTable是線程安全的,而 ArrayList和HashMap並非線程安全的。由於同步須要花費機器時間,因此Vector和HashTable的執行效率要低於 ArrayList和HashMap。java

 

 

List接口數組

List是有序的Collection,使用此接口可以精確的控制每一個元素插入的位置。用戶可以使用索引(元素在List中的位置,相似於數組下標)來訪問List中的元素,這相似於Java的數組。安全

 

 

Map接口異步

請注意,Map沒有繼承Collection接口,Map提供key到value的映射。一個Map中不能包含相同的key,每一個key只能映射一個 value。性能

 

HashMap是容許使用 null 值和 null 鍵的!Hashtable是不容許的!線程

 

 HashSet : 爲快速查找設計的Set。存入HashSet的對象必須定義hashCode()。設計

果說查找的話確定是HashMap的效率高些嘛,由於它是散列存儲的,而ArrayList是順序存儲的code

執行效率是Map的一個大問題。看看get()要作哪些事,就會明白爲何在ArrayList中搜索「鍵」是至關慢的。而這正是HashMap提升速度的地方。HashMap使用了特殊的值,稱爲「散列碼」(hash code),來取代對鍵的緩慢搜索。「散列碼」是「相對惟一」用以表明對象的int值,它是經過將該對象的某些信息進行轉換而生成的。全部Java對象都能產生散列碼,由於hashCode()是定義在基類Object中的方法。對象

   HashMap就是使用對象的hashCode()進行快速查詢的。此方法可以顯着提升性能繼承

相關文章
相關標籤/搜索