Java 随机词检索的数据结构

Java 随机词检索的数据结构,java,data-structures,hashmap,Java,Data Structures,Hashmap,我正在尝试用Java构建一个基于单词的游戏应用程序。我浏览了一些现有的问题,并了解了如何获得单词表。我提到的一些问题: 我的动机是产生一个随机词。在将单词列表作为文本文件下载之后,我正在尝试生成一个 Map<String, Integer> m = new HashMap<String, Integer>(); Map m=newhashmap(); 这可以给我一个单词,因为我可以使用生成的随机整数查询它 这是推荐的方法还是有更好的方法从单词列表中生成随机单词 谢

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

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

Map<String, Integer> m = new HashMap<String, Integer>();
Map m=newhashmap();
这可以给我一个单词,因为我可以使用生成的随机整数查询它

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


谢谢。

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

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

您可以使用列表或甚至字符串数组,用大词列表填充它,然后生成随机数,然后使用该随机数作为索引从列表中选择单词。

您可以使用列表甚至字符串数组并用大词列表填充它,然后生成随机数,然后使用该随机数作为索引从列表中选择该词

  • 您建议的映射无法实现您的目标,因为HashMaps允许您访问与给定键关联的值,而不允许您访问与该值关联的键。因此,如果您使用HashMap,它应该是
    Map

  • HashMap相对于其他数据结构的主要优点是查找时间恒定:无论映射有多大,检索给定键的值所需的时间都保持不变。这与无序的ArrayList形成对比,在无序的ArrayList中,查找元素所花费的时间会随着列表大小的增加而增加。但是,由于您不是在寻找特定的单词,而是任何单词,HashMap的好处不适用于您的情况

  • 正如其他人所说,最好的方法似乎是:

  • ArrayList words=新的ArrayList()

    //加上所有的单词

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

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

  • 您建议的映射无法实现您的目标,因为HashMaps允许您访问与给定键关联的值,而不允许您访问与该值关联的键。因此,如果您使用HashMap,它应该是
    Map

  • HashMap相对于其他数据结构的主要优点是查找时间恒定:无论映射有多大,检索给定键的值所需的时间都保持不变。这与无序的ArrayList形成对比,在无序的ArrayList中,查找元素所花费的时间会随着列表大小的增加而增加。但是,由于您不是在寻找特定的单词,而是任何单词,HashMap的好处不适用于您的情况

  • 正如其他人所说,最好的方法似乎是:

  • ArrayList words=新的ArrayList()

    //加上所有的单词

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


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

    从这篇文章()我可以理解,
    HashMap
    在随机检索方面比
    ArrayList
    有更好的性能。我错了吗?@bdhar不幸的是,在你已经拥有HashMap之前,你无法从HashMap中得到你想要的东西it@bdhar按索引查找项与使用任意键之间存在差异。对于前者,没有什么比数组(或ArrayList)更好的了,这是你的情况。@gasan-如果
    HashMap
    是这样的:
    new HashMap()
    ,那么随机数就是
    Integer
    ,我可以使用
    HashMap.get(Integer)
    right???@bdhar right获得一个随机字。但是这将不需要花费性能和资源。从这篇文章()我可以理解,
    HashMap
    在随机检索方面比
    ArrayList
    有更好的性能。我错了吗?@bdhar不幸的是,在你已经拥有HashMap之前,你无法从HashMap中得到你想要的东西it@bdhar按索引查找项与使用任意键之间存在差异。对于前者,没有什么比数组(或ArrayList)更好的了,这是你的情况。@gasan-如果
    HashMap
    是这样的:
    new HashMap()
    ,那么随机数就是
    Integer
    ,我可以使用
    HashMap.get(Integer)
    right???@bdhar right获得一个随机字。但这将不需要花费性能和资源