【问题标题】:How to shuffle a file[] using java collections?如何使用 java 集合对文件 [] 进行洗牌?
【发布时间】:2013-12-15 08:14:26
【问题描述】:

我确定我在阅读中遗漏了一些东西,但我无法弄清楚。我的程序从目录中获取图像文件列表,然后随机选择文件作为游戏的一部分显示。问题是,每次我使用随机数生成器运行它时,它都有重复的数字。在阅读时,我看到了 Collections,我认为这对我有用,因为它会随机打乱列表。这消除了对随机数生成器的需要。我的问题是我不知道如何让它洗牌文件[]。

这是我尝试的最后一件事

comboFile =  filePath.listFiles();

    List listShuffle = new List();
    listShuffle = (List) Arrays.asList(comboFile);

使用 list without 摆脱了该错误,但现在 Collections.shuffle 方法给了我一个错误。没有找到适合 shuffle 的网络(java.awt.list)

    Collections.shuffle(listShuffle);

如何将 File 数组变成一个列表来随机播放?

【问题讨论】:

  • 请发布 comboFile 的类型,因为如果它是 java.awt.List 是您问题的很大一部分,因为这不是 Collection。

标签: java list collections


【解决方案1】:

问题似乎是listShuffle 洗牌后从未使用过。您仍在读取 comboFile 数组中的值,该数组永远不会被打乱。

另外,它应该是Arrays.asList() 而不是Array.asList()

【讨论】:

  • 我没有更新其他代码,因为我收到一条带有 array.asList(comboFile) 的错误消息。消息是找不到符号方法 asList(File[])
  • @user1793408:如果您不包含任何错误,任何人都很难提供帮助。我用可能解决该问题的方法更新了我的答案。
  • 很抱歉,我更改了代码以专门针对问题并列出了错误消息。
  • @user1793408:您是否按照建议尝试了Arrays.asList() 而不是Array.asList()
  • 我已按照建议进行了更改,但遇到了一些其他错误,直到我陷入 Collections.shuffle 方法为止。
【解决方案2】:

您使用了错误的类型。将您的导入更改为 java.util.List 而不是 java.awt.List。错误是告诉你没有方法可以接受你传入的列表类型。

是的,您可能想像其他人建议的那样使用Arrays.asList() 创建列表。

【讨论】:

    【解决方案3】:

    请尝试 Arrays.asList() 函数。

    它将对数组进行包装。并调用 shuffle() 函数,这将改变内部数组元素的顺序。

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 2013-11-30
      • 2017-11-28
      • 2012-11-22
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      相关资源
      最近更新 更多