随机单词检索的数据结构

时间:2011-02-08 12:54:43

标签: java data-structures hashmap

我正在尝试用Java构建一个基于单词的游戏应用程序。我浏览了一些现有的问题,并了解了如何获得wordlist。我提到的一些问题是:

How to pick a random english word from a list

Random word selection

我的动机是生成一个随机单词。将wordlist下载为文本文件后,我正在尝试生成

Map<String, Integer> m = new HashMap<String, Integer>();

这可以给我一个字,因为我可以使用生成的随机整数来查询它。

这是推荐的方法,还是有更好的方法从词表中生成随机词?

感谢。

3 个答案:

答案 0 :(得分:4)

将单词列表粘贴到数组或ArrayList中,然后选择随机索引。 ArrayList更易于使用,因为它可以在您阅读字典文件时动态增长。

答案 1 :(得分:1)

你可以使用List或甚至是一个String数组并用大字列表填充它然后生成随机数,然后使用该随机数作为索引从列表中选择单词。

答案 2 :(得分:1)

  1. 您建议的地图无法实现目标,因为HashMaps允许您访问与给定密钥关联的值,因此不允许您访问与值关联的密钥。因此,如果您使用HashMap,它应该是Map<Integer, String>

  2. HashMap相对于其他数据结构的主要好处是常量查找时间:无论地图有多大,检索给定键值的时间都保持不变。将其与无序的ArrayList进行对比,其中查找元素所花费的时间可以随着List的大小增加而增加。但是,由于您不是在寻找特定的单词,而是任何单词,HashMap的好处并不适用于您的情况。

  3. 正如其他人所说,最佳方法似乎是:

  4. ArrayList words = new ArrayList();

    //添加所有单词

    随机r = new Random()//用于生成随机数的对象

    String randomWord = words.get(r.nextInt(words.size()));