我正在寫一個應用程序,它從Web服務中下載文件。在這種情況下使用Java集合
方式文件是如何被描述下載如下:
- 從網絡服務,下載文件的列表。如果文件數量過大,請下載第一組文件,每個組中的最大數量未知。下載的文件保存在系統臨時目錄中。
- 對於每個文件,構建一個FileDescriptor(customed)類,其中包含文件filename和臨時文件名,位於系統臨時文件夾和其他一些屬性中.b FileDescriptor保存在列表中。
- 在這裏做一些商業邏輯。
- 如果有,請下載下一組文件。
我用來保存FileDescriptor列表的集合是LinkedList。但是,對於每組文件,我將創建一個全新的LinkedList來保存它們的FileDescriptors。該Psudocode是一樣的東西:
do {
List<FileDescriptor> list = new LinkedList<FileDescriptor>();
GroupOfFiles group = webService.getGroupOfFiles();
Iterator<File> itr = group.iterator();
while(itr.hasNext) {
list.add(new(FileDescriptor(itr.next()));
}
<My Business Logic here>
} while(group.hasMoreGroups());
如可似乎,每次文件的新組檢索,我要創建一個新的LinkedList。處理完這組文件之後,不再需要LinkedList。我無法創建一個列表並重新使用它,因爲每個組可以包含的最大數量是未知的。
如果我使用這樣的代碼,並且有數百萬個文件,例如每個組最多隻能有1000個文件,它最終會以很多LinkedList(及其元素)作爲垃圾。這有什麼好做的嗎?我相信在這種情況下會有更好的方法來處理它。
請給出意見。
非常感謝。
將對此列表執行哪些操作?在大多數情況下'ArrayList'效率更高。爲什麼你不能重用它?當您向他們添加元素時,大多數集合都會動態增長。 – 2012-04-21 10:31:46