如何获取,返回和删除数组中的随机元素?

时间:2017-02-01 13:02:39

标签: java arrays

如何从数组中获取,返回和删除随机元素,并且效率最高? 数组代码看起来像这样:

String arr[3] = {"Cat", "Dog", "Mouse", "Horse"};

感谢您的帮助。

修改

顺便提一下记忆游戏,所以如果它重复两次以上,我就会破坏游戏。

4 个答案:

答案 0 :(得分:1)

您可以使用%运算符在数组中创建随机索引。使用Math.random获取小数随机数并使用它来创建随机索引,如下所示

String[] arr = {"Cat", "Dog", "Mouse", "Horse"};
    int randPos = ((int)(Math.random()*1000))%arr.length;
    String randEl = arr[randPos];
    System.out.println(randEl);

您无法删除数组元素。您所能做的就是将其设置为null

答案 1 :(得分:0)

你可以这样做:

 String[] datas = new String[3];
 Random rand = new Random();
 rand.setSeed(System.currentTimeMillis());

 int i = rand.nextInt(datas.length);
 String val = datas[i];
 datas[i] = null;
 return val;

答案 2 :(得分:0)

获取字符串

.exe

要返回,请从方法中返回 字符串 Random r = new Random(); String arr[3] = {"Cat", "Dog", "Mouse", "Horse"}; String selectedString = arr[r.nextInt(arr.length)];

要删除

selectedString

注意,这不会改变Random r = new Random(); String arr[3] = {"Cat", "Dog", "Mouse", "Horse"}; arr[r.nextInt(arr.length)] = null 元素,array的长度也不会减少。

如果您需要这种功能,我建议您使用{{1>} Arraylist

答案 3 :(得分:0)

您基本上无法从数组中删除元素。

请按照以下步骤操作:

  1. 将数组转换为ArrayList
  2. List<String> list = new ArrayList<String>(Arrays.asList(arr));

    1. 获取索引的粉丝编号
    2. int randPos = ((int)(Math.random()*1000))%arr.length;

      1. 删除该索引处的元素
      2. list.remove(randPos);

        1. 将其转换回字符串数组
        2. arr = list.toArray(new String[0]);

          希望这会有所帮助:)