Webサービスからファイルをダウンロードするアプリケーションを作成しています。このシナリオでJavaコレクションを使用する
次のように記述されているか、ファイルがダウンロードされる方法:
- Webサービスから、ファイルのリストをダウンロードしてください。ファイル数が大きすぎる場合は、最初のファイルグループをダウンロードしてください。各グループの最大数は不明です。ダウンロードしたファイルはシステムの一時ディレクトリに保存されます。
- ファイルごとに、ファイルfilenameとシステムの一時フォルダ内の一時ファイル名とその他の属性を含むFileDescriptor(カスタム)クラスを作成します.b FileDescriptorはリストに保存されます。
- ここでビジネスロジックを実行します。
- ファイルがあれば、次のグループをダウンロードします。
FileDescriptorのリストを保存するために使用したコレクションはLinkedListです。しかし、ファイルのグループごとに、新しいFileDescriptorsを保持するLinkedListを作成します。 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は必要なくなります。 1つのリストを作成して再利用することはできません。なぜなら、各グループに含めることができる最大数は不明であるからです。
このようなコードを使用していて、何百万ものファイルがある場合、各グループは最大1000個のファイルしか持てません。たとえば、多くのLinkedList(およびその要素)がGarbageとして終了します。これはいいことですか?このシナリオでは、より良い対処法があると確信しています。
ご意見ください。
多くのありがとうございます。
このリストにはどのような操作が行われますか?ほとんどの場合、 'ArrayList'ははるかに効率的です。なぜそれを再利用できないのですか?ほとんどのコレクションは、要素を追加すると動的に成長します。 –