2012-03-27 5 views
0

다음과 같이하면됩니다. 이름이 약 40,000 개이며 상수로 유지되는 텍스트 파일 (약 10000 행)이 검색에서 검색으로 변경됩니다. . 텍스트 파일의 각 줄을 검색하여 이름과 텍스트 사이에 정확한 문자열 일치가 있는지 확인한 다음 일치 항목과 일치 항목 (아래 참조)을 반환하는 적절한 방법을 찾아야합니다. 가장 느린 것처럼 중첩 된 'for 루프'로 구현했습니다. 매우 느립니다. 나는 다른 사람들이이 같은 질문을 찾았을 것이라 확신하며,이 질문이 반복적이라면 사과한다. 그러나 나는 적절한 답을 찾기 위해 상당한 노력을 기울 였고 지금까지 실패했다. 제안 할 수있는 도움을 주시면 감사하겠습니다 (자바 선호). 이 검색 속도를 높이는 모든 구조가 나에게 유익 할 것임을 기억하십시오 (최고 일 필요는 없습니다). 어떤 도움을 주셔서 진심으로 감사드립니다.Java에서 하위 문자열 검색

예 :

names.txt (정적) 앤디 딕 앤드류 커닝햄 . . . Isaac P. Newton . . . 줄루

text.txt (동적) 이것은 Isaac P. Newton 또는 Zulu와 같은 이름을 포함 할 수도 있고 포함하지 않을 수도있는 임의의 텍스트입니다. 이삭 P. 뉴턴 1 줄루어 2

+3

지금까지 해보신 것은 무엇입니까? 이 숙제가 있습니까? 맵을 사용하여 정적 이름과 ocurrences 수를 저장하십시오. – pcalcao

+0

무관하지만 내 성은 Newton이고 나는 Andy와 함께 고등학교에 다녔다. 그래서 그게 있습니다. –

+4

응용 프로그램에서 lucene을 사용할 수 있지만 문서의 색인을 먼저 만들어야합니다 (텍스트 파일). 그러면 검색은 번개 속도로 진행됩니다. –

답변

0

당신은 당신이 모든 이름을로드 자바에서의 HashMap를 사용할 수 있습니다 여기에 더 라인 ... 또 다른 줄루어 ...

나는 다음을 반환해야 names.txt를 HashMap에 추가 한 다음 검색하면됩니다. 그것은 당신의 성과를 향상시켜야합니다. 다음은 몇 가지 샘플 코드입니다.

 HashMap<String, Integer> textNames = new HashMap<String, Integer>(); 
     for (String name : nameFile) { 
      textNames.put(name, 0); 
     } 

     for (String line : textFile) { 
      if (textNames.containsKey(line)) { 
       textNames.put(line, textNames.get(line)+1); 
      } 
     } 

--v

0

본인은 40,000 명에서 유한 자동 장치를 구성하는 건의 할 것입니다. Java에서는 정규 표현식을 사용하여이를 수행 할 수 있습니다. 각 이름을 "|"기호로 연결하여 정규 표현식을 구성하십시오. 상징. 패턴을 컴파일하고 각 입력 행을 패턴과 대조하십시오.

관련 문제