所以,我想有一種方法來訪問一個數組列表,該列表對象只是在給定的對象中。將對象內的數組列表存儲是一種很好的方法嗎?據我所知,它只會創建一個指向該數組列表的指針,並不會將所有數據從數組列表中複製到該對象。這個推理是否正確?出於其他原因,我是否應該避免這樣做?在作爲該數組列表的一部分的對象中存儲數組列表
回答
將對象內的數組列表存儲是一個很好的方法來做到這一點?
這取決於你的意思是什麼「好」:它肯定會按照你描述的方式工作,所以你在這方面很好。但是,如果從數組列表中刪除對象,或者必須將對象從一個數組列表「遷移」到另一個數組列表,則事情可能會變得很麻煩。
您需要協調刪除和清除或更改「我的收藏」回參考。如果你不小心,你甚至可能最終會發生內存泄漏,因爲整個數組列表可能會保留更長的引用時間。
所有這些都會造成維修責任,所以如果您能想到一種不這樣做的方式,您應該避免這樣做。
我會指出這個結構非常常見(並且很有用),並且在大多數情況下不會造成問題。如果該陣列本質上是瞬態的,那麼它確實需要考慮,以防止(錯誤地)稱爲「泄漏」。 –
@HotLicks關於內存泄漏的誤解是錯誤的,我並不特別喜歡將Java中引用延遲引用稱爲「內存泄漏」的想法,但在看到它像這樣使用了十多年後,我決定繼續使用流量,並稱之爲「泄漏」。至少在症狀方面有一些相似之處以證明命名的合理性:-) – dasblinkenlight
- 1. 將形狀作爲對象存儲到數組列表中
- 2. 數組列表存儲到在c#另一個數組列表
- 3. 存儲在數組列表
- 4. 從存儲在數組列表中的對象訪問數組列表的所有元素(2維)
- 5. 隱藏列表的一組對象數
- 6. 存儲數組中的列表
- 7. 如何將對象作爲參考存儲在數組,列表或映射中?
- 8. java返回數組列表的一個對象的數組列表另一個對象的其餘對象
- 9. 將IEnumerable對象列表轉換爲對象數組列表C#
- 10. 對象和數組列表
- 11. 刪除存在於另一個數組列表中的數組列表中的所有對象
- 12. 如何使用存儲在數組列表中的對象進行操作?
- 13. 分配存儲在變量中的值作爲數組列表的名稱
- 14. 將數據作爲數組/列表存儲在neo4j屬性上
- 15. 比較數組列表中的對象
- 16. GAE數據存儲:如何存儲自定義對象的數組列表
- 17. 如何存儲自定義對象的數組列表?
- 18. Redux:用於存儲博客列表的數組或對象?
- 19. Javascript:通過一系列數組對象循環存儲數組
- 20. 將鏈接列表作爲索引存儲在數組C++中
- 21. 將矩陣的部分存儲在列表對象中?在R
- 22. 如何查找存儲在Java的數組列表中的對象中的值
- 23. 我類似的對象存放在C#中的數組列表
- 24. 的Python:存儲對象列表外部
- 25. 如何壓縮存儲在python列表中的一組列表?
- 26. 在列表中對列表進行迭代,該列表在數組中
- 27. 如何在數組列表android中存儲字節數組?
- 28. 將數據存儲到交叉類的對象的數組列表中
- 29. 在數組列表中存儲Sax解析器數據爲HashMap
- 30. 如何將自己的數據類型的列表存儲在對象數組列表中
否否否否否。不,不要像這樣創建一個循環引用,這是在尋求麻煩。你將不得不修改你的設計,給我們更多的信息,我們可以提供幫助。 –
@JeroenVannevel - 你完全難以置信地錯誤。在Java中創建循環引用沒有什麼不對。 (當然,在特定情況下它可能是不好的程序設計,但對於JVM來說這不是一個嚴重的問題。) –