第48期Java面試題:HashMap與HashTable、Arraylist

HashMap與HashTable的區別

1)繼承不同

public class Hashtable extends Dictionary implements Map

public class HashMap extends AbstractMap implements Map

2)Hashtable 中的方法是同步的,而HashMap中的方法在缺省情況下是非同步的。在多線程併發的環境下,可以直接使用Hashtable,但是要使用HashMap的話就要自己增加同步處理了。

3)Hashtable中,key和value都不允許出現null值,在HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。當get()方法返回null值時,即可以表示 HashMap中沒有該鍵,也可以表示該鍵所對應的值為null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵, 而應該用containsKey()方法來判斷。

4)兩個遍歷方式的內部實現上不同。

Hashtable、HashMap都使用了 Iterator。而由於歷史原因,Hashtable還使用了Enumeration的方式 。

5)哈希值的使用不同,HashTable直接使用對象的hashCode。而HashMap重新計算hash值。

6)Hashtable和HashMap它們兩個內部實現方式的數組的初始大小和擴容的方式。HashTable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數

Java中有多少種數據結構,分別是什麼?

List:是列表,有下標值,存儲元素可以重複,遍歷元素是有序的。

Set:是散列集,無下標值,存儲元素不可重複,遍歷元素時無序的。

Map:是以鍵值對存儲,一個key一個value,key不可以重複,value可以重複。

數組:指定類型,固定長度,元素存儲地址是連續的。

樹:元素以樹形結構存儲,只有一個根節點。

棧:元素是先進後出,後進先出。

向量:動態數組,可以存儲任何類型元素,動態長度,元素存儲地址是連續的。

隊列:元素存儲是排列有序的,一定保證先進的先出,後進的後出。

Arraylist 和linklist 的區別

相同點:

ArrayList和Linklist都是接口List的實現類,裡面的數據都是有序可重複的。

區別:

ArrayList: 採用的是數組形式保存對象的,訪問速度更快,而Linklist的插入和刪除元素的速度更快

第48期Java面試題:HashMap與HashTable、Arraylist/linklist區別


分享到:


相關文章: