2011-11-19 25 views
2

我有一個1000字的列表。我需要從該列表中隨機選擇n個單詞加載一個數組(不允許重複)。去做這件事的最好方法是什麼?Android將字符串加載到數組中

我的思路:

1)裝載字轉換爲R.arrays創建一個字符串數組。使用collections.shuffle對數組進行洗牌,然後從數組中拖出前n個條目。現在,我遇到了內存問題,使用這種方法加載1000個字的初始數組。

2)將單詞加載到文本文件中,將每個單詞讀入一個String數組。使用相同的方法獲得前n個條目。

3)硬編碼的單詞輸入到一個字符串數組(我會使用腳本來獲得輸出當然)。使用相同的方法獲得前n個條目。

有沒有更好的方法?

回答

1

如果您主要擔心內存使用情況,並且您願意放棄計算速度,那麼這裏有一個算法可以幫助您。

將文字保存在文本文件中,每行一個單詞,每個單詞有固定數量的字符,每個單詞末尾用空格填充以確保固定的字符大小,稱爲s

  1. 創建最大尺寸n的陣列,稱之爲w
  2. 打開流讀取器到包含1000個字的文件
  3. 獲取1和1000之間的隨機數,把它叫做k
  4. 尋求在文件流中定位k*s,並抓取下一個s字符
  5. 如果該字段不存在於數組中,則將該字添加到w
  6. 如果w數組已滿(即,大小= n),我們完成了,否則回到步驟3

讓我們知道它是怎麼回事。快樂的編碼!

+0

這似乎只是足夠瘋狂的工作。當我直接從R.arrays加載字符串時,有什麼想法爲什麼Android會抱怨? 1000個字符串真的佔用了那麼多的內存嗎? – Allen

+0

是字符串非常昂貴。當記憶是一個問題時,我會盡可能遠離他們。 –