2013-10-21 57 views
0

我想在文本文件我的用戶ID映射到使用Java代碼唯一的整數值。 我有一個大約50MB的大文本文件,這樣做的傳統方式將花費我很多時間 例如映射字符串值,以整數的大文件

 3245 4567 
     3245 8726 
     4567 8363 
     4567 7363 
     4567 5267 etc 
    After mapping I want my output file to look like 
    1 2 
    1 3 
    2 4 
    2 5 
    2 5 
+2

到目前爲止您嘗試的「傳統方式」是什麼? – Geobits

+1

正常的蠻力方法...代碼在循環中運行,這需要很多時間 – happs

+0

將使用替換幫助的正則表達式嗎?編輯:你試過了嗎?我從來沒有在這麼大的文件上測試過性能。 –

回答

2

嘗試使用HashMap<String, Integer>(見HashMap)其中整數是一個計數器每遞增你遇到一個新的ID時間。您將字面上的ID字符串映射到整數,所以應該很容易從那裏處理文本。因此你的預期運行時間是O(n)。

或者,你也可以嘗試使用String.getHashCode()給出的哈希碼。如果你有大約10000個ID,碰撞的機率只有1%。如果你的概率減少得很厲害。

既然你還指出,要保留排序,那麼LinkedHashMap是完美的。當您遍歷它時,順序與插入順序相同。

+0

Yupp linkedhashmap幫助.....謝謝 – happs