java的LinkedList類中的元素是否有索引? 如果是那麼爲什麼它的性能o(n)在最差的情況下用於搜索操作時可以直接使用該對象的索引進行搜索? 如果沒有那麼我們如何使用void add(int index, Object item)
方法在鏈表中插入一個對象?java的LinkedList類中的元素是否有索引?
回答
它們有一個邏輯索引,是的 - 實際上是從頭開始迭代到達該節點之前需要迭代的次數。
這不像說「它可以直接使用對象的索引進行搜索」 - 因爲它不能。
通常,O(1)通過索引訪問是通過使用數組查找來執行的,並且在鏈接列表的情況下不是數組 - 只有一連串節點。要訪問索引爲N的節點,您需要從頭開始,沿着鏈N走,這是一個O(N)操作。
LinkedList
中的元素不包含任何索引信息,也沒有從索引到元素的映射。
如果請求個位置(通過調用add(int index, Object item)
),這將需要在LinkedList
的從它的開始或從它的端部的元素迭代將元素添加到i
」(取決於它們中的哪一個更接近所請求的索引),直到達到所請求的索引。
他們*做*有一個索引,這就是爲什麼你可以使用'indexOf','get(index)'等。這只是它不映射到「數組中的索引」。他們可能沒有一個名爲'index'的字段,但這並不意味着您無法找到它們在列表中出現的位置。 –
@JonSkeet如果你有一個索引你的意思是有一個命令,那麼是的,你可以說他們有一個索引。使用這個邏輯,你可以說SortedSet中的元素也有一個索引。 – Eran
顯然*是從索引到元素的映射:'LinkedList.get(index)'。以什麼方式*不是*從索引到元素的映射? (實際上,我認爲對於* Sorted * Set而不是其他集合,也有一個合理的索引,但通常不會這樣看)。 –
- 1. 搜索LinkedList中的元素
- 2. LinkedList刪除索引java
- 3. 對Linkedlist元素的返回引用
- 4. 索引boost :: multi_index_container中是否可以索引某些元素?
- 5. Java中LinkedList的LinkedList?
- 6. 找到元素中元素的索引
- 7. Java LinkedList搜索
- 8. linkedList雖然元素是空的
- 9. 是否有處理選擇「的元素包含類的元素」
- 10. 某個類的元素的jQuery索引
- 11. 的Java LinkedList的搜索
- 12. Collections.sort是否尊重並列輸入元素中的索引? (分類穩定性)
- 13. LinkedList中的所有元素與添加的元素具有相同的值
- 14. 從Java中的LinkedList中刪除重複的元素
- 15. LinkedList的添加元素
- 16. 刪除元素,LinkedList的
- 17. 僞元素中是否有僞元素?
- 18. Java LinkedList訪問第二個元素
- 19. 在LinkedList中查找元素
- 20. 列表中有多少元素,該元素的索引點擊
- 21. 在Java中搜索LinkedList
- 22. 如何檢查列表中是否存在具有特定索引的元素?
- 23. 如何匹配LinkedList中的索引值
- 24. 元素索引
- 25. 索引的元素的
- 26. 使用lambda找到LinkedList中的元素
- 27. 查找具有z索引的元素
- 28. 按索引選擇元素(同一類的多個元素)
- 29. 檢查元素是否具有類
- 30. 檢查元素是否有兩個類
所以如果我有100000個對象,並且需要插入一個新對象在第99998個位置,那麼哪一個更好ArrayList或LinkedList ??? – pavan
@ user3275663:不幸的是,使用LinkedList提供的API,ArrayList肯定會成爲贏家。在其他API中,您可以從末尾開始*向後*(只有2個位置),然後在該位置便宜地插入。 –
你能否提一下我們可以向後工作並插入對象的API? – pavan