웹 서비스에서 파일을 다운로드하는 앱을 작성 중입니다.이 시나리오에서 자바 콜렉션 사용하기
다음과 같이 파일 설명 다운로드하는 방법을 방법 : 웹 서비스에서
- , 파일의 목록을 다운로드합니다. 파일 수가 너무 큰 경우 첫 번째 파일 그룹을 다운로드하십시오. 각 그룹의 최대 수는 알 수 없습니다. 다운로드 된 파일은 시스템 임시 디렉토리에 저장됩니다.
- 각 파일에 대해 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가 더 이상 필요하지 않습니다. 각 그룹에 포함 할 수있는 최대 수를 알 수 없기 때문에 하나의 목록을 만들고 다시 사용할 수는 없습니다.
이와 같은 코드를 사용하고 수백만 개의 파일이있는 경우 각 그룹은 최대 1000 개의 파일 만 가질 수 있습니다. 결국 많은 LinkedList (및 해당 요소)가 Garbage로 끝납니다. 이게 뭔가 좋은 일이야? 이 시나리오에서는 더 나은 방법이있을 것이라고 확신합니다.
의견을 말하십시오.
감사합니다.
이 목록에서 수행 할 연산은 무엇입니까? 대부분의 경우'ArrayList'가 훨씬 더 효율적입니다. 왜 정확히 재사용 할 수 없습니까? 대부분의 콜렉션은 요소를 추가 할 때 동적으로 커집니다. –