2013-06-07 4 views
0

для моей курсовой работы (двоичное дерево поиска и hashtables) Я хотел бы сделать программу java, которая сканирует текстовый файл и заказывает слова на основе наиболее часто встречающихся слов. Что-то вроде самых популярных тегов.Java двоичное дерево поиска и hashtable

Пример: 1. Сканировать файл. 2. Список слов, которые появляется более одного раза

WORD TOTAL
Banana 10
вс 7
море 3

Вопрос 1. как я могу сканировать текстовый файл?
Вопрос 2. Как проверить наличие дубликатов в текстовом файле и его номер?
Вопрос 3. Как распечатать слова, которые появляются более одного раза в порядке, таком как мой пример?

Мое программирование не сильно.

+0

Хорошо ... но ты не задал вопрос. Пожалуйста, прочитайте http://tinyurl.com/so-hints –

+0

. В чем вопрос? –

ответ

1

Так как курсовая работа, я не собираюсь предоставить вам полную информацию, но я постараюсь направить вас в возможном направлении:

  1. Google, как читать слова из текстового файла (это очень распространенная проблема, вы можете найти множество примеров)
  2. Используйте, например, hashmap (string to int), чтобы подсчитать слова: если слово а не в hashmap, добавьте его с кратностью 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); 
+0

@jdnhldn Я добавил код –

+0

Мне удалось прочитать файл и использовать карту для подсчета. Но что-то не так, потому что оно учитывает только алфавиты, а не слова. – JustinBieber

+0

@jdnhldn, чтобы читать слова, вы должны делать 'readLine' повторно (пока не будет больше строк) и разделить строку по пробелу. –

Смежные вопросы