我正在写一个应用程序,它从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