我想知道數組和鏈表。如果您嘗試對數組和鏈接列表中的元素進行排序,速度會更快。哪個列表索引是更快的數組或鏈表?如果我們試圖從數組和鏈表中找到一個元素,這將花費更少的時間來查找相應的元素,最後一件事情是什麼? 我對數組和鏈表有所瞭解。糾正我,如果我錯了。數組是固定大小和連續的內存數據結構。而鏈表不是固定的大小。數組和鏈表
Q
數組和鏈表
0
A
回答
0
從SCJP認證書:
的ArrayList:
可以把它看作一個可增長的數組。它給你快速的迭代和快速的隨機訪問。要說明這一點:它是一個有序集合(按索引),但不是 排序。你可能想知道,從版本1.4開始,ArrayList現在實現了 新的RandomAccess接口 - 一個標記接口(意思是它沒有方法), 表示「這個列表支持快速(通常是恆定時間)的隨機訪問。」 選擇 這在一個LinkedList,當你需要快速迭代,但不作爲可能是做了很多 插入和刪除的
的LinkedList:
一個LinkedList被索引位置排序的,如ArrayList,除了 這些元素是彼此雙重鏈接的。這種聯繫爲您提供了新的 方法(超出了您從列表界面獲得的內容),用於從開始或結束添加和刪除 ,這使得它成爲實現堆棧 或隊列的簡單選擇。請記住,LinkedList的迭代速度可能比ArrayList慢,但當您需要快速插入和刪除時,它是一個不錯的選擇。從Java 5開始, LinkedList類已被增強以實現java.util.Queue接口。作爲 這樣,它現在支持公共隊列方法: 偷看(),輪詢(),並提供()
0
ArrayList表示爲一個數組,但ArrayList類正在做所有事情,包括調整數組大小,所以你不必關心大小。
Add to end : constant time
Add to else : linear time (average is n/2 = O(n))
Get : constant
Delete : same as add
LinkedList的表示爲鏈表。這意味着鏈表的每個部分都可以訪問下一部分和之前的部分。
Add to anywhere : constant time
Delete from anywhere : constant time
Get : linear time (average is n/2 = O(n))
但是,兩者都是列表,這意味着它們不是固定的。唯一的區別是當你使用它們時,有些方法比另一個List實現更快/更慢。
0
對於所有這些操作,數組的速度更快。鏈接列表更快的唯一時間是當你需要刪除或添加一個元素。但是對於固定的項目集合,數組總是更快。
相關問題
- 1. 鏈表與數組
- 2. 鏈表的數組
- 3. C++使用鏈表和動態數組
- 4. 複數和鏈表
- 5. 鏈表數組中的Java
- 6. 數組或鏈接列表
- 7. 鏈接列表數組Java
- 8. 鏈接列表數組
- 9. 數組創建鏈表
- 10. 二維鏈表數組
- 11. 數組指針鏈表
- 12. 鏈接列表的數組
- 13. 數組和鏈接結構
- 14. 數組和指針鏈
- 15. 表和數組
- 16. 的Java數組列表,鏈表和堆棧問題
- 17. C數組鏈接列表,將數組鏈接列表分配給另一個
- 18. 創建鏈表的數組列表
- 19. 路由表實現:鏈表與數組
- 20. 鏈接列表的數組表示
- 21. 哈希表數組鏈表的鏈表陣列
- 22. 指針,鏈表和函數
- 23. 數學「鏈表」和性能
- 24. 鏈表和函數指針
- 25. 線性和二進制搜索列表使用數組和鏈表
- 26. 組織一個鏈表到C++中的鏈接列表數組中
- 27. 使用鏈接列表和字符數組時分段錯誤
- 28. C中的鏈接列表數組:初始化和插入?
- 29. 使用數組實現鏈表 - 優點和缺點
- 30. 用動態數組模擬單鏈表
或許谷歌將幫助你把這個通用的問題。 – Anand