我想知道什麼API或集合最適合用於使用掃描儀來搜索文檔,計算單詞出現的次數,並創建一個字母表列表中的這兩個單詞和每個單詞a下一個詞是多少次的子列表。Java排序收集/ api
這是一個類,所以請指出我正確的方向,因爲我對Java和包完全陌生,但我不想要任何實際的編碼技巧,謝謝。
我想知道什麼API或集合最適合用於使用掃描儀來搜索文檔,計算單詞出現的次數,並創建一個字母表列表中的這兩個單詞和每個單詞a下一個詞是多少次的子列表。Java排序收集/ api
這是一個類,所以請指出我正確的方向,因爲我對Java和包完全陌生,但我不想要任何實際的編碼技巧,謝謝。
我想你可以用Map<String, Map<String, Integer>>
做那樣的事情。基本上你會得到一個單詞,它與一個包含所有連續單詞及其頻率(即它們出現的次數)的映射關聯。那麼,你就必須是:
Map<String, Map<String, Integer>> frequencyTable = new HashMap<String, Map<String, Integer>>();
的分類,你可以創建一個保存一個單詞,它的頻率一類。然後,您可以將TreeSet
與比較器一起使用(或在您的課堂上實施compareTo
)以強制排序。那麼你的地圖應該是這樣的:
Map<String, TreeSet<Frequency>> frequencyTable = new HashMap<String, TreeSet<Frequency>>();
假設Frequency
是保存有關字符串,並將其出現次數信息類。這裏唯一的困難是每次你需要更新頻率時查找這個詞,因爲你必須遍歷整個集合。
這包含他正在查找的所有內容,但不容易公開一個單詞的總使用次數。它可能是更多的Java/OO來做Map
@Colin你是對的。完全忘記了分揀部分。我會嘗試編輯。我現在正在打電話。 – 2012-07-06 18:19:34
看看它的有關排序........
下面是幾個選項...
使用Collections.sort(T T)隨着可比接口,如果你想排序只有 單程。
使用Collection.sort(T T,比較器C)與Comparator接口到一個以上的方式進行排序沿。
如果唯一性非常重要,你也可以使用TreeSet中有比較。
您是否正在創建馬爾可夫鏈?看起來你正在描述的是頻率表。 – 2012-07-06 18:09:26
我建議使用'HashMap'來計算每個單詞的出現次數。另一個'HashMap'來計算2-grams。 CodeEval創建了一些類似的挑戰:http://codeeval.com/open_challenges/55/(你需要註冊才能看到它) – alfasin 2012-07-06 18:10:28
這是爲了從某些輸入文本中遇到的語法中創建新的隨機句子/段落嗎?我會去HashMap。 – 2012-07-06 18:12:33