Android将字符串加载到数组中

Android将字符串加载到数组中,android,arrays,string,text,load,Android,Arrays,String,Text,Load,我有一张1000字的单子。我需要加载一个数组,其中包含从该列表中随机选择的n个单词(不允许重复)。这样做的最佳方式是什么 我的想法是: 1) 将单词加载到R.array中以创建字符串数组。使用collections.shuffle洗牌数组,然后从中取出前n个条目。现在,我在使用这种方法加载初始数组时遇到了内存问题,其中包含1000个单词 2) 将单词加载到文本文件中,将每个单词读入字符串数组。使用相同的方法获取前n个条目 3) 将单词的输入硬编码到字符串数组中(当然,我会使用脚本获得输出)。使用

我有一张1000字的单子。我需要加载一个数组,其中包含从该列表中随机选择的n个单词(不允许重复)。这样做的最佳方式是什么

我的想法是:

1) 将单词加载到R.array中以创建字符串数组。使用collections.shuffle洗牌数组,然后从中取出前n个条目。现在,我在使用这种方法加载初始数组时遇到了内存问题,其中包含1000个单词

2) 将单词加载到文本文件中,将每个单词读入字符串数组。使用相同的方法获取前n个条目

3) 将单词的输入硬编码到字符串数组中(当然,我会使用脚本获得输出)。使用相同的方法获取前n个条目


有更好的方法吗?

如果您主要担心内存使用,并且愿意放弃计算速度,那么这里有一个算法可以帮助您达到目的

将单词保存在一个文本文件中,每行一个单词,每个单词有固定数量的字符,在每个单词的末尾填充空格以确保固定的单词字符大小,称之为
s

  • 创建一个最大大小的数组
    n
    ,称之为
    w
  • 打开包含1000个单词的文件的流读取器
  • 获取一个介于1和1000之间的随机数,称之为
    k
  • 在文件流中定位
    k*s
    ,并抓取下一个
    s
    字符
  • 如果该单词在数组中尚不存在,则将其添加到
    w
  • 如果
    w
    数组已满(即size=
    n
    ),则完成,否则返回步骤3

  • 让我们知道进展如何。快乐编码

    这似乎已经够疯狂的了。你知道为什么当我直接从R.array加载字符串时Android会抱怨吗?1000个字符串真的占用那么多内存吗?是的,字符串非常昂贵。当记忆成为一个问题时,我会尽可能远离他们。