java面試題目總結

1.arraylist和linkedlist的區別
ArrayList 採用的是數組形式來保存對象的,這種方式將對象放在連續的位置中,所以最大的缺點就是插入刪除時非常麻煩
LinkedList 採用的將對象存放在獨立的空間中,而且在每個空間中還保存下一個鏈接的索引  但是缺點就是查找非常麻煩 要叢第一個索引開始。
ArrayList
ArrayList其實是包裝了一個數組 Object[],當實例化一個ArrayList時,一個數組也被實例化,當向ArrayList中添加對象是,數組的大小也相應的改變。這樣就帶來以下有缺點:
快速隨即訪問 你可以隨即訪問每個元素而不用考慮性能問題,通過調用get(i)方法來訪問下標爲i的數組元素。
向其中添加對象速度慢 當你創建數組是並不能確定其容量,所以當改變這個數組時就必須在內存中做很多事情。
操作其中對象的速度慢 當你要想數組中任意兩個元素中間添加對象時,數組需要移動所有後面的對象。

LinkedList
LinkedList是通過節點直接彼此連接來實現的。每一個節點都包含前一個節點的引用,後一個節點的引用和節點存儲的值。當一個新節點插入時,只需要修改其中保持先後關係的節點的引用即可,當刪除記錄時也一樣。這樣就帶來以下有缺點:
操作其中對象的速度快 只需要改變連接,新的節點可以在內存中的任何地方
不能隨即訪問 雖然存在get()方法,但是這個方法是通過遍歷接點來定位的所以速度慢。
說白了,就是數據結構中的順序存儲和鏈式存儲


1 HashMap不是線程安全的

       hastmap是一個接口 是map接口的子接口,是將鍵映射到值的對象,其中鍵和值都是對象,並且不能包含重複鍵,但可以包含重複值。HashMap允許null key和null value,而hashtable不允許。

2   HashTable是線程安全的一個Collection。

HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap允許空(null)鍵值(key),由於非線程安全,效率上可能高於Hashtable。
HashMap允許將null作爲一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因爲contains方法容易讓人引起誤解。 
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不需要自己爲它的方法實現同步,而HashMap 就必須爲之提供外同步。 
Hashtable和HashMap採用的hash/rehash算法都大概一樣,所以性能不會有很大的差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章