java.io. * Импорт, импорт Классы в java.util * ;. / ** * регистронезависимы * / класс TrieNode { TrieNode [] = новый новый Следующий TrieNode [26]; // только строчные буквы TRIE хранения 1 0 хранения для хранения б ... 25 Z INT COUNT = 0; // количество вхождений буквы междунар WordCount = 0; // число раз слово появляется обугленного currentChar, общественное TrieNode (символ Word) { this.currentChar = слово; } } общественного класса {основной государственной статической силы основных (String [] арг) бросает IOException { // считываем файл (поток символов) BufferedReader в BufferedReader новый новый = (в InputStreamReader новый новый (новый новый в FileInputStream ( "E: \\ WORD.TXT"), "GBK" )); // это в основном направлено на китайский // чтение данных // извлечения данных цикла STR = пустая строка; TrieNode новый новый TrieNode корень = ( '0'); // инициализация корневой узел () = нуль (STR = in.readLine (!)) {Это время ВСТАВИТЬ (корень, STR); } появляется // найти слово число // INT COUNT = Query (корень, "мир"); // System.out.println (COUNT); // Находим наибольшее число вхождений слова 10 Карта <String, Integer> карта = новый TreeMap <String , Integer> (); // ключ по умолчанию в соответствии с порядком возрастания в BufferedReader новый новый = (в InputStreamReader новый новый (новый новый в FileInputStream ( "E: \\ WORD.TXT"), "GBK")); это время ((STR = in.readLine ( !)) = NULL) { INT = Query Query (корень, STR); map.put (STR, запрос); } // Сортировка Сортировка по убыванию значение Список список <Map.Entry <String, Integer >> = новый ArrayList <Map.Entry <String, Integer >> (map.entrySet ()); Collections.sort (список, новый Comparator <Map.Entry <String, Integer >> () { @Override общественного ИНТ сравнения (Map.Entry <String, Integer> o1, Map.Entry <String, Integer> o2) { возвращение - . o1.getValue () CompareTo (o2.getValue ()); } }); INT = 0; для (Map.Entry <String, Integer> отображения: список) { если (я ++ == 10) { перерыва; } System.out.println ( "单词:" + mapping.getKey () + "出现:" + mapping.getValue ()); in.close (); } Государственной статической силы вставки (TrieNode корень, String ул) { ул = str.toLowerCase (); символ [] = си str.toCharArray (); для (INT I = 0; г <chars.length; я ++) { INT индекс = символы [I] - 'а'; TrieNode [] следующая = root.next; если (следующий [индекс] == NULL) {//节点为Проверить наличие // System.out.print ( "Вставить" + символы [я] + ";"); Следующий [индекс] = новый TrieNode (символы [I]); } Следующий [индекс] .Count ++; корень = следующий [индекс]; } Root.wordCount ++; // System.out.println (); } // Строка запроса существует и не существует возвращает 0, число возврата существует общественный статический Int Query (TrieNode корень, STR String) { IF (корень == NULL) { вернуть 0; } STR = str.toLowerCase (); полукокса [] = str.toCharArray символы (); для (INT I = 0; I <chars.length, я ++) { TrieNode [] = Далее root.next; INT = индекс символов [I] , - 'А'; ЕСЛИ (Следующая [индекс] == NULL) { возвращают 0; } {еще в корень Далее = [индекс]; } } вернуть root.wordCount; } }