2013-06-07 3 views
0

내 교과 과정 용 (이진 검색 트리 및 해시 테이블) 가장 자주 사용되는 단어를 기반으로 텍스트 파일과 주문 단어를 검색하는 자바 프로그램을 만들고 싶습니다. 가장 인기있는 태그와 같은 것입니다.Java 이진 검색 트리 및 해시 테이블

예 : 1. 파일을 스캔합니다. 표시 2. 목록 단어를 더

번 이상

WORD TOTAL
바나나 (10)
일 7
내가 텍스트 파일을 스캔 어떻게 해 3

질문 1. 무엇입니까?
2. 텍스트 파일에서 중복 된 내용을 확인하고 번호를 매기려면 어떻게해야합니까?
3. 예제와 같이 순서대로 나타나는 단어가 두 번 이상 출력되는 방법은 무엇입니까?

프로그래밍 방식이 강력하지 않습니다. 이 코스 작업이기 때문에 난 당신 자세한 내용을 제공 않을거야, http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained#Multiset

+0

좋아에 따라 ...하지만 당신은 질문을하지 않았습니다. 질문이 있으시면 http://tinyurl.com/so-hints –

+0

을 읽어주십시오. –

답변

1

을, 그러나 나는 가능한 방향을 가리 키도록 노력 할게요 :

+0

@jdnhldn 코드 –

+0

을 추가했습니다. 파일을 읽고 맵을 사용하여 계산했습니다. 그러나 단어가 아닌 알파벳 만 계산하기 때문에 무언가 잘못되었습니다. – JustinBieber

+0

@jdnhldn 단어를 읽으려면'readLine'을 (더 이상 줄이 없을 때까지) 반복적으로하고 행을 공백으로 나눠야합니다. –

0

당신은 구아바 해방에서 MULTISET을 사용할 수 있습니다

  1. Google 텍스트 파일에서 단어를 읽는 방법 (매우 일반적인 문제이므로 많은 예제를 찾을 수 있습니다)
  2. 예를 들어 단어를 계산하기 위해 hashmap (문자열을 int로)을 사용합니다. 아직 해시 맵에 없지만 다중성 1을 추가하십시오. (예 : 대문자를 무시하려는 경우 단어에 대한 사전 처리를 원할 수 있습니다.)
  3. 해시 맵에서 다중성이 1보다 큰 단어 필터링
  4. 필터링 된 항목을 정렬합니다 단어의 목록은 수

매우 높은 수준의 구현 (많은 오픈 끝 :))

List<String> words = readWordsFromFile(); 

Map<String, Integer> wordCounts = new HashMap<>(); 
for(String word : words) { 
    String processedWord = preprocess(word); 
    int count = 1; 
    if (wordCounts.containsKey(processedWord)) { 
     count = wordCounts.get(processedWord)+1; 
    } 
    wordCounts.put(processedWord, count); 
} 

removeSingleOccurences(wordCounts); 
List<String> sortedWords = sortWords(wordCounts);