我正在尝试用Java构建一个基于单词的游戏应用程序。我浏览了一些现有的问题,并了解了如何获得wordlist。我提到的一些问题是:
How to pick a random english word from a list
我的动机是生成一个随机单词。将wordlist下载为文本文件后,我正在尝试生成
Map<String, Integer> m = new HashMap<String, Integer>();
这可以给我一个字,因为我可以使用生成的随机整数来查询它。
这是推荐的方法,还是有更好的方法从词表中生成随机词?
感谢。
答案 0 :(得分:4)
将单词列表粘贴到数组或ArrayList
中,然后选择随机索引。 ArrayList
更易于使用,因为它可以在您阅读字典文件时动态增长。
答案 1 :(得分:1)
你可以使用List或甚至是一个String数组并用大字列表填充它然后生成随机数,然后使用该随机数作为索引从列表中选择单词。
答案 2 :(得分:1)
您建议的地图无法实现目标,因为HashMaps允许您访问与给定密钥关联的值,因此不允许您访问与值关联的密钥。因此,如果您使用HashMap,它应该是Map<Integer, String>
HashMap相对于其他数据结构的主要好处是常量查找时间:无论地图有多大,检索给定键值的时间都保持不变。将其与无序的ArrayList进行对比,其中查找元素所花费的时间可以随着List的大小增加而增加。但是,由于您不是在寻找特定的单词,而是任何单词,HashMap的好处并不适用于您的情况。
正如其他人所说,最佳方法似乎是:
ArrayList words = new ArrayList();
//添加所有单词
随机r = new Random()//用于生成随机数的对象
String randomWord = words.get(r.nextInt(words.size()));