我有一個大的文本文件,我需要在Java中進行排序。其格式爲:在Java中排序非常大的文本文件
字[標籤]頻率[新線]
該算法用於分類是:
- 閱讀部分文件的,對於purlely字母字濾波。
- 一旦您有X個字母字,請調用Collections.sort並將結果寫入文件。
- 重複,直到讀完文件。
- 開始讀取兩個排序文件,逐行比較更高頻率的詞,並同時寫入新文件,以免將太多內存載入內存中
- 重複,直到所有文件合併爲一個大文件文件
現在我已經把大文件分成了更小的文件(按降序排列),每行有10,000行。我知道我需要以某種方式將這些文件合併到一起,但我不知道如何去解決這個問題。
我創建了一個LinkedList來跟蹤所有創建的文件。該算法表示比較兩個文件中的每一行,除了我已經嘗試過一種情況,比如file1 = 8,6,5,3,1和file2 = 9,8,8,8,8。然後,如果我逐行比較它們,我會得到file3 = 9,8,8,6,8,5,8,3,8,1,這是不正確的排序(它們應該是降序)。
我想我誤解了算法的某些部分。如果有人能指出我應該做什麼,我會非常感激。謝謝。
編輯:是的,這是一項任務。我們不允許增加內存不幸的是:(
只是檢查,但你確定它不是一個選項只是爲了堆起來的堆大小,並在一次完成所有事情? – skaffman 2009-12-05 20:00:35
...或者這是作業嗎? – skaffman 2009-12-05 20:01:05
如果這不是家庭作業,那麼明智的解決方案是使用現有的排序實用程序,如Linux/UNIX'sort'命令。 – 2009-12-06 02:34:37