我有一個應用程序在計算機上搜索文件(可配置的路徑,類型等)。目前,只要找到匹配的文件,它就會將信息添加到數據庫中。而不是在插入數據庫之前,我想將這些信息保存在內存中用於進一步操作。該列表可能包含很多項目。我認爲性能是重要因素。我可能需要迭代項目,因此可以輕鬆編碼的結構是另一個關鍵問題。以及我如何才能實現這個工作的PHP風格關聯數組?什麼數據類型/結構來存儲文件列表信息?
回答
嘗試使用http://sourceforge.net/projects/alcinoe/的AVL-Tree作爲關聯數組。它有一個快速迭代的迭代方法。您可能需要從他的基類中派生並實現您自己的比較器,但它很容易使用。
包括的例子。
如果您使用的是Delphi 2009,則可以使用TDictionary。它需要兩個通用參數。首先應該是一個字符串,文件名,第二個是任何數據類型,也有關聯。它還有三個內置的枚舉器,一個用於鍵值對,一個用於鍵,另一個用於值,這使得迭代變得容易。
另一種解決方案是隻使用標準的TStringList。
只要它的排序,並有一定的重複比dupAccept設置等,可以使用的indexOf或indexofname快速查找列表中的項目。
它還具有對象添加,它允許您存儲附加到名稱的對象信息。從D2009開始,TStringList具有OwnsObject屬性,它允許您將對象清理委託給TStringList。在D2009之前,你必須自己處理。
這很大程度上取決於你將如何使用列表和規模。如果你打算使用它作爲堆棧或隊列,那麼TList可以正常工作。如果您需要搜索特定項目的列表,那麼您將需要一些可以更快檢索的內容。 TDictionary(2009)或TStringList(2009年以前)將是最有可能的選擇。
動態數組也成爲了可能,但是如果你使用它們,你將要使用SetLength作爲每次調用它會重新分配內存時儘量減少。 TList爲你管理這個,這就是爲什麼我建議使用TList。如果你知道你會提前處理多少,那麼使用一個動態數組,並在開始時設置它的長度。
如果你有更多的項目會適合內存,那麼你的選擇也會改變。在這一點上我會要麼使用一個數據庫表,或TFileStream的存儲要處理的記錄,然後設法處理表/流的開始。
- 1. 用什麼數據庫結構來存儲GEDCOM信息?
- 2. 什麼是存儲表格數據結構的最佳類型?
- 3. 什麼是存儲位置信息的最佳數據結構?
- 4. C運行時使用什麼數據結構來存儲關於類型大小等變量的信息?
- 5. 我應該使用什麼數據結構/ db來存儲文件樹結構?
- 6. 存儲數據類型信息
- 7. 保存數據結構的類型信息
- 8. 使用類/結構來存儲信息在R
- 9. 我應該使用什麼類型的數據結構來保存錶行?
- 10. 什麼是存儲multiselect選取列表的數據類型?
- 11. 什麼是REBOL結構!數據類型?
- 12. 我應該使用什麼數據結構來存儲.fasta頭文件集合?
- 13. 我應該使用什麼樣的數據結構來存儲文件庫..?
- 14. 什麼集合來存儲樹結構?
- 15. 什麼是最好的數據類型來存儲C和單詞列表?
- 16. 爲什麼Java使用堆數據結構來存儲對象?
- 17. 什麼數據結構被用來在networkX中存儲圖形?
- 18. 什麼haskell數據結構來存儲可變的樹
- 19. 如何使用結構將信息存儲在列表中?
- 20. 應使用什麼SQL列數據類型來存儲電子郵件地址?
- 21. 我應該使用什麼數據類型來存儲文本數據?
- 22. 什麼數據結構我們通常使用散列表存儲散列鍵?
- 23. 什麼提供數據類型的對象列表存儲它在表列
- 24. 在C++數據結構中存儲多種數據類型
- 25. Redis - 用什麼數據類型來存儲用戶活動
- 26. 使用什麼數據類型來存儲「MMYYYY」格式
- 27. 用於存儲僅追加消息的數據結構和文件結構?
- 28. 數據類型和文件結構
- 29. 使用Objective C和GLKit存儲模型信息的數據結構
- 30. 什麼類型的數據可以類類型存儲?