ArrayList shuffled String Array recall

时间:2015-08-05 01:20:16

标签: java arrays random arraylist

我已经使用了一个ArrayList来存储一些字符串,以便它们可以随机选择(随机是我调用第一个值/数组,它是一个未知数组,已被洗牌)。我想使用这个新随机选择的数组从中选择一个值并将其分配给变量。

    `ArrayList die = new ArrayList();
    String[] D1 = {"A","B","B","J","O","O"};
    die.add(D1);
    String[] D2 = {"G","N","W","E","H","E"};
    die.add(D2);
    String[] D3 = {"E","E","N","U","I","S"};
    die.add(D3);
    String[] D4 = {"I","T","Y","D","T","S"};
    die.add(D4);
    String[] D5 = {"S","E","O","T","I","S"};
    die.add(D5);
    String[] D6 = {"R","D","I","X","L","E"};
    die.add(D6);
    String[] D7 = {"N","N","Z","R","H","L"};
    die.add(D7);
    String[] D8 = {"O","T","W","A","T","O"};
    die.add(D8);
    String[] D9 = {"E","E","G","A","N","A"};
    die.add(D9);
    String[] D10 = {"R","E","T","T","Y","L"};
    die.add(D10);
    String[] D11 = {"S","P","C","A","H","O"};
    die.add(D11);
    String[] D12 = {"O","U","M","C","I","T"};
    die.add(D12);
    String[] D13 = {"E","T","W","R","H","V"};
    die.add(D13);
    String[] D14 = {"Qu","N","M","I","U","H"};
    die.add(D14);
    String[] D15 = {"F","F","P","S","A","K"};
    die.add(D15);
    String[] D16 = {"D","R","Y","V","E","L"};
    die.add(D16);
    Collections.shuffle(Arrays.asList(die));`

我尝试使用String diceOne = die.get(new Random().toString(die.get(0).Length));函数随机调用第一个混洗数组中的String值,但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先从List

获取元素
Collections.shuffle(Arrays.asList(die));
String[] values = (String[])die.get(0);

也可以抓住第一个元素,因为列表已经被随机化了。接下来,从数组中获取一个随机值...

Random rnd = new Random();
String value = values[rnd.nextInt(list.length)];

如果您想在某种循环中执行此操作,请继续使用Random的相同实例,否则您将面临生成非随机重复项的风险,例如......

Random rnd = new Random();
for (int index = 0; index < 100; index++) {
    Collections.shuffle(Arrays.asList(die));
    String[] values = (String[])die.get(0);
    String value = values[rnd.nextInt(values.length)];
    System.out.println(value);
}

如果您使用泛型来指定List

中的预期值,您可能会发现更容易
ArrayList<String[]> die = new ArrayList<>();
//...
String[] values = die.get(0);