首页 > 解决方案 > 重复从Java中的arraylist中选择和删除一个随机条目

问题描述

编写一个程序,从数组列表中重复选择和删除随机条目。直到数组不再包含条目。

我很难在这里迭代它。因为每次arraylist的位置都是随机的。当随机数为 0 时,我还需要边缘情况。
无论如何,以下是我的代码。那么该怎么做呢?

import java.util.ArrayList;
import java.util.Random;

public class R3_1 {
    public ArrayList<String> cars = new ArrayList<String>();
    {cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");}


    public String  removeentry() {

        int size = cars.size();
        Random rn = new Random();
        int a  = rn.nextInt(size) ;


        System.out.println(cars.get(a));
        cars.remove(a);

        a = a-1;
        System.out.println(cars.get(a));
        cars.remove(a);
        
        a = a-1;
        System.out.println(cars.get(a));
        cars.remove(a);

        System.out.println(cars.get(a));
        cars.remove(a);
        return "done";
    }
}

 

标签: java

解决方案


我建议一个while循环,你每次都要求新的随机值,给定新的列表大小

public String removeentry() {
    Random rn = new Random();
    int a;
    String removed;
    while (!cars.isEmpty()) {
        a = rn.nextInt(cars.size());
        removed = cars.remove(a);
        System.out.println(removed);
    }
    return "done";
}

也可以使用for循环

public String removeentry() {
    Random rn = new Random();
    int a;
    String removed;
    for (int i = cars.size(); i > 0; i--) {
        a = rn.nextInt(i);
        removed = cars.remove(a);
        System.out.println(removed);
    }
    return "done";
}

推荐阅读