如何通過引用對象或特定節點來有效地從Java的LinkedList中刪除節點?使用remove(object)遍歷整個列表,如文檔所證明的:「刪除第一個元素e,使得(o == null?e == null:o.equals(e))」。我可以通過特定的節點去除嗎?我不介意將對節點的引用存儲在對象本身中。我不能使用列表的索引,因爲它可能會改變。如果沒有,是否有另一個數據結構可以讓我做到這一點?通過引用從鏈接列表中刪除Java節點
回答
嘗試使用LinkedHashSet。它基本上是一個HashSet
,其元素的確定性排序。或者,您可以將其視爲以元素查找表格支持的LinkedList
。
我相信remove(Object)
操作將是恆定時間。
謝謝,這是非常接近我想要的。然而,當我想通過引用直接訪問時,哈希似乎仍然是一種解決方法。 – user3473949
HashSet不允許重複。你可能想要定義你的equals和hashCode方法。如果互動表現很關鍵,您還需要注意初始能力 – hellboy
您可能需要使用HashSet
缺失,插入是一般在固定時間內,通過官方API指出:
這個類提供了基本操作 固定時間性能(添加,刪除,包含和大小),假設散列函數分散在桶中的元素
如果您決定e要使用HashSet
,不要忘記覆蓋對象中的equals
和hashcode
方法。
我確實考慮過HashSet,但我需要保留廣告訂單。另外,哈希似乎是一種解決方法,當我想直接通過引用訪問。 – user3473949
在這種情況下,回答@tskuzzy你需要一個'LinkedHashSet'。但哈希不是「解決方法」 – cheseaux
- 1. 從鏈接列表中刪除節點
- 2. 從鏈接列表中刪除節點
- 3. 從鏈接列表中刪除節點
- 4. 從鏈接列表中刪除節點
- 5. 從鏈接列表中刪除節點
- 6. 從Java中的鏈接列表中刪除奇數int節點
- 7. 按索引從鏈接列表中刪除節點
- 8. 從Java鏈接列表中刪除節點
- 9. 刪除鏈接列表中的節點
- 10. 刪除鏈接列表中的節點
- 11. 刪除鏈接列表中的節點
- 12. 刪除鏈接列表中的節點
- 13. 鏈接列表和通過* headRef刪除節點
- 14. java刪除節點鏈表
- 15. 使用java刪除鏈接列表中的節點
- 16. 鏈接列表刪除節點後根
- 17. 鏈接列表刪除節點
- 18. 通過引用比較鏈接列表中的節點
- 19. 如何刪除java中鏈接列表中的唯一節點?
- 20. 使用鍵從鏈接列表中刪除節點
- 21. 從鏈接列表中刪除節點不起作用
- 22. 根據用戶輸入從鏈接列表中刪除節點
- 23. 從跳過列表中刪除節點
- 24. 刪除鏈接列表中的節點java
- 25. 刪除/釋放Java中的鏈接列表節點。建議請
- 26. 從具有特定值的鏈接列表中刪除節點
- 27. 嘗試從鏈接列表中刪除節點時出現NullPointerException?
- 28. 如何從鏈接列表中刪除節點?
- 29. 從鏈接列表中搜索並刪除一個節點
- 30. 從單個鏈接列表中刪除一個節點C
基本上你想要一個指針給你的節點? – zgc7009
你自己的鏈表?內置的'LinkedList'?如果你自己,這取決於你如何實現它。你有什麼嘗試?你能發佈相關的代碼,並描述你遇到的問題嗎?至於其他數據結構,這取決於您的要求。你必須更具體。 –