2012-11-04 4 views
0

HTML 파일 용 워드 인덱서 구현을 작성 중입니다. 생성자에 문제가 생겼습니다.HTML 단어 인덱서 구현

생성자에서 HTML 파일의 각 단어를 스캔하여 TreeMap에 추가합니다. 여기서 링크 된 목록은 파일의 키인 단어가 나타나는 인덱스의 모음입니다. 테스트 중에 링크 된 목록은 결코 커지지 않습니다. 나는 누군가가 내 코드를보고 상황이 섞여있는 올바른 방향으로 나를 가리킬 수 있는지 궁금합니다.

while(scanner.hasNext()) { 
      String temp = scanner.next().toLowerCase(); 

      if(this.wordMap.containsKey(temp)) { 
       LinkedList<Integer> tempList = this.wordMap.get(temp); 
       tempList.add(currentIndex); 

       wordMap.put(temp, tempList); 

       wordCount++; 
       currentIndex++; 
      } 
      else { 
       LinkedList<Integer> tempList = new LinkedList<Integer>(); 
       tempList.add(currentIndex); 
       wordMap.put(temp, tempList); 

       wordCount++; 
       currentIndex++; 
      } 
     } 
+0

결국 'wordmap'에 무엇이 있습니까? –

+0

if 블록 안에 'wordMap.put (temp, tempList)'이 필요 없습니다. –

+0

if 블록에서 링크 된 목록을 섹션의 다음 색인으로 업데이트합니다. tempList를 작성해, 현재의 인덱스의리스트와 동일하게 설정해, 그것을 현재의 인덱스로 갱신 해, put 메소드를 사용해리스트를 갱신합니다 (키가 이미 트리에 존재하고있는 경우는, put 메소드 만 값을 업데이트합니다). – user1547050

답변

0

이 응답 코드에 자신 (DRY)를 반복하지 마십시오되지 않은 : 나는 코드에서 버그를 찾을 수 없습니다

while(scanner.hasNext()) { 
     String temp = scanner.next().toLowerCase(); 

     LinkedList<Integer> tempList; 
     if(this.wordMap.containsKey(temp)) { 
      tempList = this.wordMap.get(temp); 
     } else { 
      tempList = new LinkedList<Integer>(); 
     } 

     tempList.add(currentIndex); 
     wordMap.put(temp, tempList); 
     wordCount++; 
     currentIndex++; 
    } 

. 스캐너의 구분 기호를 확인하는 것이 좋습니다.