1

개인 영화 데이터베이스를 만들고 있는데 IMDB의 영화 제목이있는 콤보 상자를 채우고 싶습니다. IMDB는 텍스트 파일에서이 정보를 공개하기 때문에 그 텍스트 파일들. 필자는 작동하지만 텍스트 파일이 매우 커서 모든 행에 제목이있는 약 80,000 개의 행이 있기 때문에로드하는 데 오랜 시간이 걸립니다.(대용량) TextFile에서 JComboBox 채우기

이 작업을 수행하는 것은 잘못된 방법 일 수 있습니다. 누군가 그것을 해결하는 방법이나 내가해야하는 것을 알고 있습니까?

파일을 읽고 반환에 대한 코드는 문자열 [] 콤보 상자

public String [] getMoviesFromFile() throws IOException{ 

    BufferedReader input = new BufferedReader(new FileReader(filePath)); 
    try { 
     String line = null; 
     while ((line = input.readLine()) != null){ 
      strings.add(line); 

       } 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    finally { 
     input.close(); 
    } 

    String[] lineArray = strings.toArray(new String[]{}); 
    return lineArray; 

} 
+1

cobmo 상자에 80,000 개의 행을 채우시겠습니까? – Nivas

+0

자동 제안이 포함 된 콤보 상자이므로 무언가가 입력 될 때마다 일치하는 제안이 표시됩니다. Google 검색과 비슷합니다. – Fredkr

답변

2

당신이 당신의 응용 프로그램을 만들 것입니다 이벤트 파견 스레드를 차단 갖는 문제에 대한 연삭 정지 반면에 와서 파일이 읽기 시작됩니다. EDT에서 시간이 많이 걸리거나 행동을 취하지 않아야합니다.

오프 백그라운드 스레드에 로딩을로드하고이 목록을로드 할 필요

, 다음 (작성해서는 안 또는 EDT의 측면 어떤 UI 요소를 수정) 동부 서머 타임에 값 다시 동기화를 다시

Concurrency in Swing을보십시오. 귀하의 실제 요구 사항을 충족하도록 설계되었으므로 귀하의 경우 SwingWorker을 살펴 보시기 바랍니다.

파일 입출력 속도가 느릴 수 있습니다. 빠른 결과를 줄 수있는 SQL 스타일 데이터베이스로 텍스트 파일을로드하는 것이 좋습니다.

작고 가볍도록 설계된 순수 Java SQL 데이터베이스 인 단일 사용자 모드로 실행되는 HyperSQL 또는 H2을보고 싶습니다. 즉 완전한 SQL 서버를 설치할 필요가 없습니다. 그들을 사용하려면