2011-11-19 23 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

是字符串非常昂贵。当记忆是一个问题时,我会尽可能远离他们。 –