随机化一个字符串数组而不重复

时间:2014-06-29 04:13:54

标签: java arrays string random

所以我遇到了一个小问题:我想随机化一个字符串数组而不重复。我已经搜索过这样的东西了,我发现了一些“没有重复的随机数组”,但我能找到的只是随机化一个int的数组而且它没有给我我想要的结果。

这是我的代码(我只是缩短了一些,只展示了有用的部分)所以你们可以帮助我使用我自己的代码。我想要随机化的数组是allCommands[]。无论如何,这是:

 Box box = Box.createVerticalBox();

        String[] allCommands = new String[]{"start", "help", "hint", "look around", "take note",
                "look under bed"};

        JLabel[] fun = new JLabel[allCommands.length];

        for(int o = 0 ; o < allCommands.length ; o++){

            fun[o] = new JLabel(allCommands[o]);

            box.add(fun[o]);

        }

快速注意:我的代码中的allCommands[]数组更大,我可能会更大,所以我想到了一种方法可以使随机发生器轻松扩展...
我尝试了CollectionArrayList之类的东西(或类似的东西),但我找不到我想要的结果。

快速提示#2:如果我的问题不是很明确,或者您希望我在代码或其他内容中添加有关变量的更多详细信息,请告诉我,我将对其进行编辑。

快速注释#3(这么多快速笔记!):我对编程很陌生。如果可能的话,我希望使用for()循环,Arraysif()else if。但任何方式进行随机化而不重复一系列字符串会让我感到高兴...

我非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您想要对阵列allCommands进行随机播放,可以采取多种方法。以下是使用Collections.shuffle()Arrays.asList()来移植由List支持的allCommands, -

String[] allCommands = new String[] { "start",
    "help", "hint", "look around", "take note",
    "look under bed" };
System.out.println(Arrays.toString(allCommands));
Collections.shuffle(Arrays.asList(allCommands)); // <-- shuffles allCommands
System.out.println(Arrays.toString(allCommands));