arraylist在遍歷的過程中能刪除嗎 arraylist和linkedlist的區(qū)別?
arraylist和linkedlist的區(qū)別?ArrayList和LinkedList共性:ArrayList和LinkedList都是List接口的實(shí)現(xiàn)類,所以都實(shí)現(xiàn)了List所有未實(shí)現(xiàn)的方法,只
arraylist和linkedlist的區(qū)別?
ArrayList和LinkedList
共性:ArrayList和LinkedList都是List接口的實(shí)現(xiàn)類,所以都實(shí)現(xiàn)了List所有未實(shí)現(xiàn)的方法,只是實(shí)現(xiàn)方法不同。
區(qū)別:List接口的實(shí)現(xiàn)不同。
ArrayList以數(shù)組的形式實(shí)現(xiàn)了List接口,所以使用ArrayList來實(shí)現(xiàn)快速隨機(jī)獲取對(duì)象的要求會(huì)更高效。
LinkedList使用鏈表實(shí)現(xiàn)列表接口,所以在執(zhí)行插入和移除動(dòng)作時(shí)比ArrayList更高效。適用于實(shí)現(xiàn)堆棧和隊(duì)列。
哈希表和哈希表
共性:都實(shí)現(xiàn)了地圖接口。
差異:
(1)繼承的父類不同
Hashtable從Dictionary類繼承,HashMap從AbstractMap類繼承。
(2)線程安全性不同
Hashtable方法是同步,而HashMap中的方法默認(rèn)是不同步的。
(3)提供contains方法
HashMap去掉了Hashtable的contains方法,改成了containsValue和containsKey,因?yàn)閏ontains方法容易被誤解。
Hashtable保留了三種方法:contains、containsValue和containsKey,其中contains和containsValue的作用相同。
(4)4)鍵和值是否允許空值。
在哈希表中,鍵和值都不允許為空值。在HashMap中,null可以作為一個(gè)鍵,而且這樣的鍵只有一個(gè);一個(gè)或多個(gè)鍵可以有空值。
(5)兩種遍歷模式的內(nèi)部實(shí)現(xiàn)不同。
HashMap使用迭代器;;Hashtable使用迭代器和枚舉。
(6)哈希值不同
哈希值的用法不同。HashTable直接使用對(duì)象的hashCod
linklist與arraylist誰更占空間?
ArrayList類似于數(shù)組,按順序存儲(chǔ)在內(nèi)存中。LinkedList類似于鏈表,沒有順序,但是每個(gè)元素都是通過指針鏈接的。因?yàn)長inkedList是無序存儲(chǔ)的,所以它可以入到任何地方,只要指針指向它。ArrayList是有序的,插入要遍歷到你想插入的位置,所以效率比較低。
因?yàn)锳rrayList是有序的,查詢時(shí)輸入索引就可以快速找到,而LinkedList不是。